打开题目
点击后
期间bp抓包也一无所获
那我们回到题目上来
我们可知这是文件包含漏洞,但是我们直接读取的是flag.php文件,而非flag.php文件源码,那我们想要获取文件源码,这里就涉及到php伪协议
php://filter可以获取指定文件源码。当它与包含函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行编码,让其不执行。从而导致任意文件的读取
php://filter/read=convert.base64-encode/resource=index.php
php://filter/resource=index.php
利用filter协议读文件,将index.php通过base64编码后进行输出。这样做的好处就是如果不进行编码,文件包含后就不会有输出结果,而是当做php文件执行了,而通过编码后则可以读取文件源码。
一些文件包含漏洞的总结:CTF中文件包含漏洞总结-CSDN博客
这道题我们需要读取文件源码,所以我们采用第一种方式,base64进行编码使其避开被当做php文件执行,convert.base64-encode,就是一种过滤器。
payload:
?file=php://filter/read=convert.base64-encode/resource=flag.php
得到flag文件被base64加密后的源文件
base64解码后 得到flag
发现flag是被单行注释掉了,故不在页面上显示出来