进入页面,只有一个超链接,进去看看
通过题目名和url上的?file=flag.php 我们可以猜出来是用php伪协议的文件包含。
文件包含漏洞原理
例如在 allow_url_include = on 时服务器上有个文件叫 index.php,且存在文件包含漏洞,这个时候就能用 php 伪协议直接把文件显示出来。
?file=php://filter/read=convert.base64-encode/resource=index.php
稍微解释下这个做法,php://filter/ 是一种访问本地文件的协议,/read=convert.base64-encode/ 表示读取的方式是 base64 编码后,resource=index.php 表示目标文件为index.php。问什么要进行 base64 编码呢?如果不进行 base64 编码传入,index.php 就会直接执行,我们就看不到文件中的内容了。php 协议还常用 php://input,这可以访问请求的原始数据的只读流,可以读取 POST 请求的参数。
把拿到的编码拿去解一下
拿到flag
<?php
echo "Can you find out the flag?";
//flag{41e876b7-38bd-45fe-99f5-5175f381c5af}