16.
这是一个典型的文件包含漏洞,(file关键字是提示,其实也是CTF的套路)。
利用:
http://120.24.86.145:8005/post/index.php****?file=php://filter/read=convert.base64-encode/resource=index.php
这个很明显是base64编码的。
然后将得到的字符串base64解码得到index的源码:
现在具体说说file=php://filter/read=convert.base64-encode/resource=index.php的含义
首先这是一个file关键字的get参数传递,php://是一种协议名称,php://filter/是一种访问本地文件的协议,/read=convert.base64-encode/表示读取的方式是base64编码后,resource=index.php表示目标文件为index.php。
通过传递这个参数可以得到index.php的源码,下面说说为什么,看到源码中的include函数,这个表示从外部引入php文件并执行,如果执行不成功,就返回文件的源码。
而include的内容是由用户控制的,所以通过我们传递的file参数,是include()函数引入了index.php的base64编码格式,因为是base64编码格式,所以执行不成功,返回源码,所以我们得到了源码的base64格式,解码即可。
如果不进行base64编码传入,就会直接执行,而flag的信息在注释中,是得不到的。
17.
我们这里用bp进行暴力破解
之后发送给 intruder
选择数字型的
五位数 那就从 10000~99999
一步一步来
之后
18.
按照题目 备份是个好习惯,是让我们寻找 .bak文件的,也就是说存在某个文件的.bak文件可以访问。
这里想推荐一航大佬的一款源码泄露工具,可以自动访问常见的CTF线索文件,如果返回正常说明文件存在。
下载地址
用命令:python SourceLeakHackerForWindows.py http://123.206.87.240:8002/web16/
把index.php.bak文件下载下来。
分析一波,11行strstr获得URI从’?‘往后(包括’?’)的字符串,12行去掉’?’,13行把字符串中的’key’替换为空,可以使用类似这样的语句:kkeyey 处理,14行parse_str把字符串解析到变量中,函数具体用法自行百度。最后需要得到key1,key2不相等而二者md5相等
我们这里具体看看parse_str函数的作用:
有两种方法绕过:
1,md5()函数无法处理数组,如果传入的为数组,会返回NULL,所以两个数组经过加密后得到的都是NULL,也就是相等的。
2,利用==比较漏洞
如果两个字符经MD5加密后的值为 0exxxxx形式,就会被认为是科学计数法,且表示的是0*10的xxxx次方,还是零,都是相等的。
下列的字符串的MD5值都是0e开头的:
QNKCDZO
240610708
s878926199a
s155964671a
s214587387a
19.
查询东西,让我们联想到了sql注入。发现有POST表单和变量名,就想到了Sqlmap的POST登陆框注入
输入框内填写1,Burp Suite抓包
-r表示加载一个文件,-p指定参数,这里参数是i-r表示加载一个文件,-p指定参数,这里参数是“id”
爆库
爆表
爆列
读取内容
以上我盗的别人的图,在我自己做的时候。我是直接将抓包后的内容放在sqlmap的文件夹里的,所以路径就少了很多。post 的参数的双引号可有可无。
20.
还不会,下次补