分析 sqlmap 通过代理发送的 Payload
在此步骤中,你将仔细查看单个请求,以了解 sqlmap 用于检测和利用 SQL 注入漏洞的具体 Payload。
在 Burp Suite 的 HTTP history 选项卡中,点击列表中的任意一个请求。当你选择一个请求时,列表下方会出现两个新的面板:Request 和 Response。
点击 Request 面板以查看 sqlmap 发送的原始 HTTP 请求。密切关注 URL 中的 id 参数。你将看到正在测试的各种 Payload。
例如,你可能会找到一个类似这样的基于布尔的盲注 Payload:
GET /index.php?id=1%20AND%208003=8003 HTTP/1.1
Host: 127.0.0.1
...
这里,sqlmap 正在测试应用程序在注入一个真条件(AND 8003=8003)时是否会做出不同的响应。%20 是空格的 URL 编码表示。
你也可能会找到一个基于时间的盲注 Payload:
GET /index.php?id=1%20AND%20(SELECT%202079%20FROM%20(SELECT(SLEEP(5)))IImL) HTTP/1.1
Host: 127.0.0.1
...
使用此 Payload,sqlmap 正在注入一个 SLEEP(5) 命令。如果服务器响应时间增加 5 秒,sqlmap 就知道注入成功,并且数据库存在漏洞。
通过分析这些请求,你将更深入地了解自动化扫描器的工作原理。你可以看到它们用来确认漏洞的逻辑,这比仅仅在终端中看到最终结果要具有更强的教育意义。