〇、协作模式(为什么快)
传统打法是自己开 Burp 抓包、手敲 payload、肉眼判断信号。我们把它拆成流水线:
-
人:在 PortSwigger 教程页点 Launch,把
0aXX...web-security-academy.net实例域名丢给 AI -
AI:Python 走 Burp 代理自动化打(探列数 → 定位文本列 → 拖库 / 盲注抠密码 → CSRF 登录)
-
人:刷新页面看到绿色 “Congratulations” 横幅,收工进下一关
AI 打一关 30 秒到 10 分钟不等,人全程只需要复制粘贴域名。Burp 开着不白开——HTTP history 里能看到完整的注入弹幕,学习复盘两不误。
铁律:每关先列"有几种解法",再逐条验证。 这条规矩救了我们好几次(见踩坑集)。
一、UNION 攻击 5 关:一套连招打穿
注入点都在 /filter?category=,打法模板化:
1. 探列数(200 = 正确):
2. 找文本列——把随机串塞各列,渲染进 <th>随机串</th> 的才是真命中(防坑:500 错误页会把 URL 里的串回显回来,是假阳性,必须确认状态 200 且进了 HTML 标签)。
3. 拖库(PostgreSQL 用 || 拼接):
4. 单列挤多值(第 5 关考点):输出列不够用时,把两个字段拼成一个字符串塞进去,就是上面这条 ||。
拿明文密码 → /login 页面先抓 csrf token → 带 token 登录 administrator,通关。
二、盲注 4 关:四大信道逐个击破
盲注的本质:数据不回显,但总有一个信道能当信号灯。四关正好四种信道:
信道 1:布尔信号(Conditional responses)
服务器发 TrackingId cookie 且拼进 SQL,页面有 “Welcome back” 字样当信号:
真 → Welcome back 出现;假 → 消失。逐字符抠完 20 位。
信道 2:报错信号(Conditional errors,Oracle 库)
信号灯换成 HTTP 500——条件为真就除零:
Oracle 要点:FROM dual、SUBSTR、TO_CHAR(1/0)。状态码硬邦邦不会抖,这关打得最稳,一发全对。
信道 3:时间延迟(Time delays,PostgreSQL)
先枚举三库延时语法锁定数据库(pg_sleep(3) 有效 = PostgreSQL,MySQL SLEEP 无效,Oracle dbms_pipe 无效),通关只要一句:
冷知识:pg_sleep 对结果集每一行都睡,sleep 10 秒实际响应 30 秒,反向侧写出 tracking 表匹配了 3 行。
信道 4:时间延迟 + 信息窃取(本系列最硬)
没回显没报错,唯一信号是响应时间。信号灯:
20 位密码、每位最多几十发、每发带 5 秒延迟——纯串行要半小时起步。解法:位级并发 + 双发一致才采信。9 分钟磨完,零错位。
三、Visible error-based:报错当回显用
这关报错会直接回显完整后端 SQL,等于开了透视挂。但有两个大坑:
-
TrackingId 有 62 字符截断——payload 超长被砍尾巴
-
PostgreSQL 短写法
password::int更诡异:同长度下含::的 payload 会在传输层被截断
试到差 1 字符卡死,最后看官方 solution 才点醒:把原 TrackingId 整个删掉,空 cookie 从引号开始注入,一下省出 16 字符:
密码转 int 失败,报错把明文原样带出:invalid input syntax for type integer: "xxxxxxxxxxxxxxxxxxxx"。爽关。
四、踩坑集(每一条都是学费)
坑
教训
二分法抠密码只有 10/20 位对
时间/布尔信道会抖,改线性扫描 + 并发 + “恰好命中一个才采信”,一次全对
500 错误页回显 URL 里的注入串
假阳性!必须确认字符串渲染进 <th> 且状态 200
换 lab 沿用上一关的列数
每个 lab 独立 schema,换 lab 必须重探列数(PostgreSQL 2 列 ≠ MySQL 3 列)
Launch 点错按钮开成别的关
拿到新实例别假设关卡类型,先测 TrackingId / category 单引号 + UNION 列数三个信号验明正身
UTL_HTTP / UTL_INADDR 外带无反应
Oracle 默认无 ACL 权限,XML 外带(EXTRACTVALUE + xmltype XXE)才是通用解
OOB 关只认 Burp Collaborator
PortSwigger 防火墙拦截 lab 到一切外部系统的回连,dnslog/interactsh 全没用
五、可复用的工具化成果
全部脚本已沉淀:
-
union_dump.py—— UNION 三步连招(探列数/文本列/拖库/登录) -
blind_v3.py—— 盲注线性扫描 + 10 线程并发 + 唯一命中校验(布尔/报错信道通用,改 payload 即用) -
time_based.py—— 时间信道版(双发一致 + 多数决抗抖动) -
error_based.py—— CAST 报错带数据
盲注 720 发请求十几秒跑完,比手抠快一个数量级。
六、写在最后
最大的体会:把重复劳动交给 Agent,把判断留给人。AI 负责批量探测、并发扫描、payload 迭代;人负责 Launch、看横幅、在 AI 钻牛角尖时一句"要不要我给你答案/邪笑"把它拽回来(真的发生过,见 Visible error-based 那关)。
下一站:OOB 外带(最后一个 SQL 注入 lab,卡在 Collaborator 网络环境,不是技术问题)→ 然后 NOSQL、XSS 系列。
以上。有更骚的打法欢迎回帖交流!