今天带大家学习一下在CTF命令执行时遇到无回显怎么办?
这里拿一道题目举例:

这道题是不是很简单,直接?cmd=tac fla???hp不就可以了吗?
后来发现没有回显,于是去查看了下:
PHP执行系统命令的4个方法 :
-
system函数:system函数执行系统命令,并将输出直接打印到标准输出。它的返回值是命令的最后一行输出或者返回状态码(命令成功执行返回0)。 -
shell_exec函数:shell_exec函数执行系统命令,但它将命令的输出作为字符串返回,而不是打印到标准输出。如果命令没有输出,则返回空字符串。 -
exec函数:exec函数执行系统命令,并将输出存储到一个数组中,每一行命令输出作为数组的一个元素。它的返回值是命令的最后一行输出或者返回状态码。 -
passthru函数:passthru函数执行系统命令,并直接将命令的输出发送到标准输出。它不会返回任何输出结果,而是直接将输出显示在屏幕上。
这里既然遇到了无回显这个函数,你第一印象是不是NC反弹shell?这样确实可以,但是也太麻烦了些,使用写入文件方式可以迅速解决。
在PHP中 ">" 是表示把什么写入什么文件的意思。
比如这道题目,既然无回显,那我就把它写进一个文件,然后访问这个文件不就可以了
?cmd= tac fla???hp>1.txt(写进1.txt文件里)

接下来直接访问1.txt就解决了
本文介绍了在CTF挑战中遇到无回显问题时,如何利用PHP的不同系统命令执行方法(system,shell_exec,exec,passthru)以及通过写入文件来获取命令输出。作者推荐使用写入文件的方式以简化问题解决过程。
423





