首页/安全/渗透测试与安全评估速查/sqlmap 注入检测用途与禁用项
工具使用要点60 条

sqlmap 注入检测用途与禁用项

sqlmap 用于验证注入点是否存在(授权 URL 范围内):以检测与证据为目的,禁用数据导出与系统命令类功能;验证到“可注入”即停止并转入修复流程。

定位:只验证存在性

sqlmap 用一组构造请求比对响应差异,判断参数是否存在注入及其类型(布尔、时间、报错、联合查询等)。在评估场景里它的角色是取证与验证:确认可注入、留下最小证据、转交修复流程,而不是继续拿数据。取数、写文件与命令执行类功能一律禁用。

基本信息

用途注入存在性与类型验证
关键参数--batch 非交互、--smart 快速判断、--level 与 --risk 控制强度
禁用项--dump、--os-shell、--file-read 等取数与执行功能
边界仅授权 URL,限速,测试窗口内执行
证据保留最小复现请求与响应,记录注入类型与位置

典型使用场景

  • 参数化接口验证:确认查询参数是否可拼接,作为修复优先级依据
  • 验证开发自查结论:开发声称已参数化,用最小请求复核是否真的生效
  • 告警核实:安全设备报告的注入尝试,用受控方式确认是否真实可利用
  • 复测:按原最小路径重放,确认修复后不再触发
  • 风险沟通:给出注入类型与影响判断,供客户决策修复窗口

检测示例

检测示例
# 最低强度跑一遍,先确认是否存在注入点
sqlmap -u "https://example.com/item?id=1" --batch --level 1 --risk 1 --smart
# 带 Cookie 的认证场景:会话由客户提供并单次使用
sqlmap -u "https://example.com/item?id=1" --cookie="SESSION=REDACTED" --batch
# 记录注入类型与位置即可,不执行取数
# 需要 POST 参数时用 --data,仍保持同一强度
sqlmap -u "https://example.com/search" --data="q=1" --batch --level 1 --risk 1

输出逐列读法

输出内容含义使用注意
parameter被判定的注入参数核对是否为业务参数而非测试残留
Type注入类型布尔与时间盲注对业务压力更大
Payload触发判定用的载荷只留最小样本,不批量枚举
Title后端数据库线索仅作参考,不作为精确版本结论
back-end DBMS数据库类型判断与资产台账交叉核对
注入验证可能触发锁表、慢查询与异常日志:在测试窗口执行并控制请求量,验证到可注入即停止。
提高 --level 与 --risk 会扩大测试面并明显增加请求量:只在明确需要且客户同意时逐步上调,不要一上手就用高强度。

易错点

  • 顺手用 --dump 导出数据造成过度取证
  • 对生产库高频测试引发性能问题
  • 直接用真实用户账号做注入测试,污染业务数据
  • 时间盲注未加限速,长请求拖垮数据库

数据来源与参考

  • sqlmap 官方文档(用法说明)
  • OWASP WSTG(注入类测试)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌