发布时间:2025-06-23 15:45:05点击量:
在 Web 安全测试中,SQL 注入仍是最常见、危害最广的漏洞之一。虽然手工测试可以精准识别,但效率较低。而 sqlmap,作为一款自动化 SQL 注入测试工具,凭借其强大识别能力与多种注入手段,成为测试人员的“利器”。
不过,sqlmap 更强大之处在于它可以配合 Burp Suite 抓取的请求数据进行精准测试,尤其适用于复杂接口或需要认证的系统环境。
虽然 sqlmap 可以直接对目标 URL 进行注入测试,但在实际测试中,经常遇到如下问题:
请求参数藏在 POST 请求体中;
目标接口需要登录认证(如 Cookie、Token);
请求为 JSON 或其他非标准格式;
测试目标不方便直接命令行访问。
这时,Burp Suite 的抓包能力就派上了用场。我们可以用它捕获完整请求数据,再将该数据导出供 sqlmap 使用。
启动 Burp Suite;
设置浏览器代理为 127.0.0.1:8080
;
登录系统或触发测试页面,确保 Burp 拦截到了目标接口请求(如包含 id=xxx
的参数);
在 Burp 的「HTTP history」中找到该请求,右键选择:
Save item → 保存为 request.txt
该文件即为标准 HTTP 请求格式,是 sqlmap 能识别的输入格式。
在终端中运行以下命令:
sqlmap -r request.txt --batch --level=3 --risk=2
参数说明:
-r request.txt
:加载 Burp 导出的请求数据;
--batch
:自动回答提示(用于非交互测试);
--level
和 --risk
:控制测试强度,可根据目标敏感度适当调整。
如需测试指定参数,可使用:
sqlmap -r request.txt -p id
如需保留 Cookie 或认证信息,也可添加:
--cookie="SESSIONID=xxxxxx"
sqlmap 会自动检测可注入点类型,包括:
Boolean-based blind
Time-based blind
Error-based
UNION query
Stacked queries
并可能输出:
数据库类型(MySQL、Oracle、SQL Server等);
可访问数据库、表名、字段名;
数据库用户权限等详细信息。
注意:如果目标为生产环境,请避免获取敏感数据,仅用于验证漏洞存在。
使用 POST JSON 请求时:建议手动提取请求内容,用 --data
自定义载入;
配合 Proxy 模块实时抓包:也可开启 sqlmap 代理监听,直接转发 Burp 请求;
复杂接口多参数测试:使用 --forms
或 --crawl
进行页面级分析;
构建自定义 header:将 Token、User-Agent 等头信息完整传入 sqlmap,避免认证失败。
Burp Suite 适合捕捉与构造精细请求,而 sqlmap 则擅长批量、自动化的注入测试。两者结合,可以帮助你:
快速定位注入点;
避免漏报或误报;
提高测试效率与准确性;
应对复杂格式或认证接口。
不论你是安全测试工程师、开发人员还是独立研究者,掌握这套联动技巧,能显著提升你的漏洞检测能力。