一招迅速搞定无回显函数shell_exec

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

今天带大家学习一下在CTF命令执行时遇到无回显怎么办?

这里拿一道题目举例:

这道题是不是很简单,直接?cmd=tac fla???hp不就可以了吗?

后来发现没有回显,于是去查看了下:

PHP执行系统命令的4个方法 :

  1. system 函数:system 函数执行系统命令,并将输出直接打印到标准输出。它的返回值是命令的最后一行输出或者返回状态码(命令成功执行返回0)。

  2. shell_exec 函数shell_exec 函数执行系统命令,但它将命令的输出作为字符串返回,而不是打印到标准输出。如果命令没有输出,则返回空字符串。

  3. exec 函数:exec 函数执行系统命令,并将输出存储到一个数组中,每一行命令输出作为数组的一个元素。它的返回值是命令的最后一行输出或者返回状态码。

  4. passthru 函数:passthru 函数执行系统命令,并直接将命令的输出发送到标准输出。它不会返回任何输出结果,而是直接将输出显示在屏幕上。

这里既然遇到了无回显这个函数,你第一印象是不是NC反弹shell?这样确实可以,但是也太麻烦了些,使用写入文件方式可以迅速解决。

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

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

?cmd= tac fla???hp>1.txt(写进1.txt文件里)

接下来直接访问1.txt就解决了

### PHP `shell_exec` 函数执行 `ping -c 4` 的含义与用法 在 PHP 中,`shell_exec()` 是一个用于执行外部命令并返回完整输出的函数。它的基本语法如下: ```php string shell_exec ( string $command ) ``` - 参数 `$command` 表示需要执行的外部命令。 - 返回值是一个字符串,表示命令执行后的输出结果。 当使用 `shell_exec('ping -c 4 <目标IP或域名>')` 时,具体含义如下: 1. **`ping` 命令**:这是一个标准的网络诊断工具,用于测试主机之间的连通性。它通过发送 ICMP 回显请求数据包到目标主机,并等待回显应答来判断网络是否可达[^1]。 2. **`-c 4` 参数**:表示发送 4 个 ICMP 请求数据包。这是对 `ping` 命令的一个常用选项,用于限制发送的数据包数量[^5]。 3. **目标 IP 或域名**:需要指定一个有效的 IP 地址或域名作为目标地址,例如 `127.0.0.1` 或 `www.example.com`。 #### 示例代码 以下是一个完整的 PHP 脚本示例,展示如何使用 `shell_exec()` 执行 `ping -c 4` 命令: ```php <?php $target = "www.google.com"; // 目标地址 $command = "ping -c 4 " . escapeshellarg($target); // 构造命令 $output = shell_exec($command); // 执行命令并获取输出 echo "<pre>$output</pre>"; // 格式化输出结果 ?> ``` #### 注意事项 1. **安全性问题**: - 使用 `shell_exec()` 时需要注意防止命令注入攻击。如果用户输入的内容直接拼接到命令中,可能会导致恶意命令被执行。因此,必须对用户输入进行严格过滤和转义,推荐使用 `escapeshellarg()` 或 `escapeshellcmd()` 函数[^1]。 2. **权限问题**: - PHP 脚本运行时的权限可能受到服务器配置限制。如果 Web 服务器以较低权限运行(如 `www-data`),可能无法执行某些系统命令。需要确保相关权限已正确配置[^3]。 3. **跨平台兼容性**: - 在 Windows 系统上,`ping` 命令的参数有所不同。例如,`-n 4` 替代了 `-c 4`。因此,在跨平台环境中需要特别注意命令格式的差异[^5]。 #### 输出示例 假设目标为 `www.google.com`,执行后可能得到类似以下输出: ``` PING www.google.com (142.250.72.100) 56(84) bytes of data. 64 bytes from bom07s21-in-f4.1e100.net (142.250.72.100): icmp_seq=1 ttl=117 time=12.3 ms 64 bytes from bom07s21-in-f4.1e100.net (142.250.72.100): icmp_seq=2 ttl=117 time=12.5 ms 64 bytes from bom07s21-in-f4.1e100.net (142.250.72.100): icmp_seq=3 ttl=117 time=12.6 ms 64 bytes from bom07s21-in-f4.1e100.net (142.250.72.100): icmp_seq=4 ttl=117 time=12.7 ms --- www.google.com ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3004ms rtt min/avg/max/mdev = 12.345/12.567/12.789/0.123 ms ``` ###
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值