BUUCTF:Basic
BUU LFI COURSE 1:
打开链接是一段php代码,我们查看相关函数highlight_file()的定义,发现存在文件漏洞,利用LFI(本地文件包含)漏洞
1 |
|
页面内的几个函数或变量功含义:
highlight_file() :函数对文件进行 PHP 语法高亮显示。语法通过使用 HTML 标签进行高亮。也就是用亮眼的字体把文件输出。
_FILE_:代表文件的绝对路径。例如“D:\www\test.php”。
isset():bool函数,用于检测变量是否已设置并且非NULL。
$_GET:在 PHP 中,预定义的 $_GET 变量用于收集来自 method=”get” 的表单中的值。
$str:一个字符串变量。
include:包含并运行指定文件。
这个php程序的大致意思就是:
首先,高亮输出当前文件。然后判断表单中”get”的值是否设置,若已设置且不为空,则将值赋给$str变量(这个变量有啥用我不清楚)。最后,将$_GET所代表的文件用include包含进php程序。
原理:
漏洞原理为include函数会将接收参数所指定的文件加载进来并执行。故此可以利用该函数来获取服务器文件信息,或者执行PHP代码
实施过程:
因为是通过路径来找到对应的文件,就可以把flag文件作为路径参数去测试,发现确实能够get到flag的值。
所以就在网址后面加上?/file=/flag

1 | 网址/?file=/flag |
此题还可以使用PHP伪协议进行解答

1 | 网址/?file=php://filter/convert.base64-encode/resource=/flag |
获得ZmxhZ3s3YjU0ZGRmOS02ZjhmLTRkOTEtYTcwZi1iMjQ1ZGQyNjlkZWR9Cg==
使用base64进行解密得到flag=flag{2a77f0f2-df71-49c6-8024-d20acf9b53d0}
在 PHP 中,convert.base64-encode 是 php://filter 流的一个过滤器,它允许你在读取文件或数据流时,将其内容实时编码为 Base64。这种过滤器非常有用,因为它可以让你在不需要将整个文件内容加载到内存中的情况下,对文件进行 Base64 编码。
当你使用 file_get_contents 或类似函数,并指定 php://filter/convert.base64-encode/resource=文件路径 作为参数时,PHP 会自动打开指定的文件,读取其内容,并在读取过程中将其编码为Base64。这样,你得到的结果就是文件的 Base64 编码表示。
在使用 php://filter/convert.base64-encode/resource=文件路径 时,文件路径可以是绝对路径也可以是相对路径。
PHP 会根据提供的路径来尝试打开文件,无论这个路径是绝对的还是相对的。如果给出的是相对路径,PHP 会基于当前脚本的执行目录(通常是包含该脚本的目录,但可以通过 chdir() 函数改变)来解析这个路径。如果给出的是绝对路径,PHP 会直接尝试打开该路径指定的文件)
BUU BRUTE 1
打开题目就是一个登录页面,尝试使用burp suite进行暴力破解

我们先尝试随机输入一个用户名和密码

然后回到我们的burp suite,将其发送到Intruder进行爆破

选中我们的用户名,进行标记,然后右边的Payloads选择SImple list在下面输入一些常见的用户名点击add,像我这样,最后点击Start attack等待爆破结果

我们发现admin的Length与别的不同,我们点击Response,会发现出现提示,密码是个四位数字

于是我们开始破解密码,先对密码做标记,选中12345,我们右侧选择Number,格式为0001到9999,四个长度,开始破解!

破解过程有些慢,跟上面破解用户名一样,选中Length最长的密码,结果是6490.
于是破解成功!
CTFHUB: 302跳转
302跳转又称暂时性转移,当网页临时移到新的位置,而浏览器的缓存没有更新时,就出现了302跳转。
简单来说就是服务器里有个 “规则设置”,明确要求 “只要有人访问 index.php,就自动转到 index.html”,相当于给 index.php 加了个 “强制导流” 指令。
我们拿到题目是这样的No Flag here!

我们果断点击Give me Flag,发现无任何反应,只是网址多了一个index.html,于是推测302跳转(题目告诉的)

我们推测flag 在 index.php 但访问跳转到 index.html,核心是绕开服务器的跳转限制,直接获取 index.php 的源码或内容
方法一
1、抓包修改请求(突破服务器 302 拦截)
打开浏览器 F12→“网络(Network)”→ 勾选 “保留日志(Preserve log)”。

直接输入http://xxx.com/index.php,触发跳转后,找到 302 状态的请求→ 右键 “复制→复制为 cURL”。


打开终端(或在线 cURL 工具),粘贴复制的命令.
成功得到flag
方法二、burp site抓包
我们打开burp site,打开Intercept开始抓包,然后打开内置浏览器,打开网站,右键这个请求,将网站发送到Repeater

打开我们的Repeater
更改请求为/index.php,点击send,成功挖到Flag!.

