Patator仅适用于服务端直接校验、无强前端限制且响应差异明显的PHP参数爆破场景;需通过--request或URL编码构造多参数请求,结合length/grep/hex精准判断响应,并注意Kali环境兼容性与并发设置。

Patator爆破PHP参数漏洞前,先确认是不是真能爆破
不是所有PHP参数都适合用patator暴力破解——它只对“服务端直接校验、无强前端限制、响应差异明显”的场景有效。比如登录接口login.php?user=admin&pass=123,后端没加验证码、没做IP限速、且返回的HTTP状态码或响应体长度/关键词有规律(如"login failed" vs "welcome"),才值得上patator。如果目标用了JWT、CSRF Token、滑动验证或WAF拦截高频请求,patator大概率扫不出东西,还容易触发封禁。
怎么写patator命令爆破带多个PHP参数的请求
关键在构造--request或--url + -d参数,让每个变量被正确替换。常见错误是把PHP数组参数(如user[0]=a&user[1]=b)当普通键值处理,或忽略URL编码。
- 用
--request最稳妥:把原始HTTP请求保存为文件(含GET /login.php?user=FUZZ&pass=FUZZ2 HTTP/1.1),再用0=users.txt 1=passwords.txt映射字典 - 若用
--url,必须手动URL编码特殊字符:patator http_fuzz url="http://x/login.php?user=FUZZ&pass=FUZZ2" 0=users.txt 1=passes.txt -x ignore:code=401 - 遇到
json或application/x-www-form-urlencoded体,改用body=FUZZ并配-d "Content-Type: application/x-www-form-urlencoded" - PHP常见参数陷阱:
id[]=1&id[]=2这种数组形式,需在字典里写成id[]=1&id[]=2(即[]编码为[])
响应判断不准?别只看HTTP状态码
PHP脚本常统一返回200,靠响应内容区分成功失败。但patator默认的-x ignore:code=403会漏掉大量真实结果。更可靠的是结合length、hex或grep:
-
-x ignore:length=1234:过滤掉响应体长度恒为1234的“失败页”(提前用curl测几个错凭,看长度是否一致) -
-x grep:"Welcome|dashboard|admin":匹配任意一个关键词即标为成功 -
-x hex:0a0d0a0d:跳过含特定十六进制特征(如双换行+空行)的响应,常用于绕过PHP输出缓冲干扰 - 注意:PHP开启
display_errors=On时可能泄露Warning: mysql_connect()之类报错,这类响应长度短、含Warning,可反向用-x grep:"Warning"快速定位SQL注入点
Kali里patator跑不动?检查这三处
不是Kali自带的patator版本低,就是环境没调对。官方GitHub已多年未更新,但Kali源里的包常带补丁,优先用系统源安装。
立即学习“PHP免费学习笔记(深入)”;
- 确认路径:
which patator应输出/usr/bin/patator;若从GitHub clone,要sudo python setup.py install且确保Python2.7可用(新版Kali默认Py3,patator不兼容) - 并发太高被重置连接?加
--threads 5和--timeout 10,PHP默认max_execution_time=30,超时值设太小会误判 - 字典路径含空格或中文?全换成绝对路径+英文名,
patator对非ASCII字符解析不稳定
PHP参数漏洞本质是服务端逻辑缺陷,patator只是放大器。真正难的从来不是命令怎么写,而是从一堆看似随机的响应里看出哪一行多了一个空格、哪个长度差了3个字节——那才是手工比对响应的耐心所在。











