行业知识
ctfshow2024元旦杯web
目录
web1 easy_include
方法1:pear文件包含
方法2:session包含利用
web2 easy_web
三个绕过点:
四个绕过点:
web3.孤注一掷
web4 easy_login
web1 easy_include
解析:是一个利用php伪协议中的file协议读取本地文件的题目
难点:加了waf,其作用就是判断传参里面开头是否是字母,是字母就可以通过。
^表示开头,[a-z]表示26个小写字母。
思路:拿到题目在想读取文件的话无外乎两种。
第一种:目录穿越,那就得..进行绕过,可是waf必须字母开头,一开始想找有没有办法绕过,发现此路不通。
第二种:知道文件名,就在当前目录读取,那用dirsearch和查找相关信息都没有,出了一个.htaccess,但没有用,一开始以为有什么信息。
既然现在不知道文件名,那尝试读取一下固定配置信息,例如:
配置文件 /etc/nginx/nginx.conf
访问日志 /var/log/nginx/access.log
但这时候有个难点:
我们只能读取当前目录文件,上面这两个都需要从根目录读取,而限制了/进行首字母传参,这里要运用知识点
localhost可以代替/进行绕过
这时候我们就能读取信息了。
从下面这里可以看到有一个younever00know.log,一开始以为是信息,但后面通过审计代码发现关闭了log,所以无用,看来半天没有找到利用点。
这时候就要想到别的文件包含默认利用点了
方法1:pear文件包含
这个方法的利用要满足几点
安装了pear
开启了registerargcargv
存在可控的include $_GET['f']
当然这里只看到有第三点有类似利用点,但***马当作活马医,先尝试一下,好像有用?
get传参
http://62d91630-839f-4c0d-afe6-504129ab4156.challenge.ctf.show/?+config-create+/+/var/www/html/a.php
post传参
1=localhost/usr/local/lib/php/pearcmd.php
为什么是这样呢,让我们来解析一下
原句是:?file=/usr/local/lib/php/pearcmd.php&+config-create+/+/var/www/html/a.php
pear工具里有一个命令叫:config-create,这个命令需要传入两个参数,其中第二个参数是写入的文件路径,第一个参数会被写入到这个文件中。
第一部分:/usr/local/lib/php/pearcmd.php 这是pearcmd.php文件的固定位置
第二部分:&+config-create+/ 这里就是传参了
第三部分: 写入参数
第四部分:/var/www/html/a.php 写入路径
那这里我们读取pear文件是post传参,但创建文件传参是在get中,所以分开了。
这里发现可以利用成功,但这有一点,不要用hackbar穿,因为