Sqlmap全参数讲解之第一篇

Sqlmap全参数讲解之第一篇

免责声明

本文只做研究使用,不可对真实未授权网站使用,所造成的一切后果本文概不承担

Options:选项

  • -h:显示基础的帮助信息

  • -hh:显示详细的帮助信息

  • –version:显示程序的版本号

  • -v: 显示详细的注入过程0-6个等级(默认值为1)

  • 0:仅显示致命错误(如 [CRITICAL] connection error
    1:默认模式,显示基本信息(如注入类型、数据库版本)
    2:显示HTTP请求类型(GET/POST)及检测到的参数
    3:显示注入Payload、重定向跳转路径
    4:显示HTTP请求头(Headers)及会话Cookie
    5:显示完整的HTTP请求和响应内容(包括原始数据)
    6:显示Python堆栈跟踪(用于开发调试)

Target:目标

  • 必须提供这些选项中的至少一个来定义目标

  • -u URL/–URL=URL目标URL:需要测试的目标地址

  • -举例:python sqlmap.py -u "

    http://192.168.137.11/sqli-labs/Less-1/?id=1"

img

  • -g ‘谷歌语法’:sqlmap可以测试注入Google的搜索结果中的GET参数(只获取前100个结果)

  • 需要安装依赖:requests google:pip3 install requests google
    因为google属于外网,所以需要代理
    完整命令:python sqlmap.py -g “inurl:.php?id=1” --proxy=“http://127.0.0.1:9999” --random-agent --delay 5

img

  • -d:直接连接数据库,适用于绕过 Web 应用层直接与数据库交互的场景

  • 需要安装pymysql:pip install pymysql
    使用:sqlmap -d “DBMS://USER:PASSWORD@HOST:PORT/DATABASE” [参数,如枚举数据库]

  • sqlmap -d “mysql://root:123456@192.168.137.101:3306/dba” --dbs

  • 参数:

    • DBMS:数据库类型(如 mysql、mssql)。
      USER/PASSWORD:数据库账号密码。
      HOST:PORT:数据库服务器地址与端口。
      DATABASE:目标数据库名

img

img

  • -l :可以直接把Burp proxy或者WebScarab proxy中的日志直接倒出来交给sqlmap来一个一个检测是否有注入

    img

    img

    img

  • 需要保存为 .txt 或 .xml文件

    img

    img

    img

  • img

  • img

  • -m:可以将多个url填入文件,对文件中的多个URL进行测试

    img

  • -r :可以将http请求包放入一个文本中,然后从一个文本文件中对http请求的一个参数进行测试,参数可以通过*号来固定要测试的位置,这样就可以跳过设置一些其他参数(比如cookie,POST数据,等等)

  • img

  • img

  • -c从配置文件加载运行参数,简化复杂命令的输入流程,适用于需要复用多参数组合的场景(配置文件中的参数优先级低于命令行)

  • 文件路径:默认名为 sqlmap.conf,支持任意路径,建议使用绝对路径避免加载失败(如 ~/.sqlmaprc)
    语法规则:

  • 每行一个参数,格式为 参数名=值

    • 忽略空行和以 # 开头的注释行
  • 注意事项:

  • 命令行参数 > 配置文件参数(若冲突,以命令行输入为准)

  • 例如:命令行指定 --level=5 会覆盖配置文件中的 level=3

  • 确保当前用户对配置文件和输出目录有读写权限

  • 优势:

-简化复杂命令,提升渗透测试效率(比如把常用的高频参数写入文件中,下次直接指定文件即可,不需要每次都输入命令)
- 支持团队标准化配置,减少人为错误
- 将高频参数(如 --tamper、–proxy)固化到配置文件
- 结合 --update 定期同步最新漏洞检测规则

  • img

Optimization:优化

  • -o:用于一键开启默认性能优化的核心参数,通过自动启用多项底层优化技术(如长连接、空连接、并发线程等)显著提升扫描效率

    • 核心功能:
  • 自动化性能调优:

  • 等效命令组合:-o 相当于同时启用以下三个优化参数:

  • –keep-alive:复用 HTTP 长连接,减少 TCP 握手开销
    - --null-connection:仅获取响应头大小(不下载响应体),节约带宽(尤其适用于盲注场景)
    - --threads=3:默认启用 3 个并发线程(可手动调整)

-适用场景:大规模目标扫描、高延迟网络环境或需快速完成初步探测时

优化项未启用启用**-o****后**提升比例
请求响应时间高(频繁重建连接)降低 30%~50%⚡️ 显著
带宽消耗高(完整下载页面)减少 60%+(空连接)🌐 高效
扫描速度慢(单线程/短连接)快(并发+长连接)🚀 加速

-典型用法:

-基础优化扫描:sqlmap -u “http://192.168.137.1/?id=1” -o

  • 作用:一键启用默认优化组合,适用于快速漏洞探测

  • 联合其他参数深度优化:sqlmap -u “http://192.168.137.1/data” -o --threads=8 --delay=1

  • –threads=8:手动提升并发数至 8(突破默认 3 线程限制)

    • –delay=1:每请求间隔 1 秒,避免触发 WAF 速率限制

-文件读取场景优化:sqlmap -r request.txt -o --batch

  • 作用:对 Burp Suite 捕获的请求文件启用优化,–batch 自动确认所有提示

  • 注意事项:

  • 技术限制与兼容性:

  • 空连接限制:若目标服务器不支持 HEAD 请求或返回异常(如 400 错误),需关闭 --null-connection(改用 --text-only)
    - 长连接冲突:与 --proxy 代理参数冲突(代理可能不支持连接复用)

  • 风险规避建议:

  • 线程数控制:避免设置过高(如 --threads=10),可能触发目标 IP 封禁
    - 替代方案

  • 高敏感环境:用 --safe-url=/health 定期访问无害页面维持会话
    - 严格 WAF:结合 --random-agent 伪装浏览器降低检测概率

  • 优先通过 -v 3 查看优化后的请求细节

    • 若遇性能瓶颈,可手动调整子参数(如关闭 --null-connection)
  • 实战场景对比:

场景推荐命令优化效果
常规漏洞扫描sqlmap -u “URL” -o快速完成基础检测,节省 40% 时间
高并发目标测试sqlmap -u “URL” -o --threads=5提升吞吐量,适合大型站点
严格 WAF 环境sqlmap -u “URL” -o --delay=2 --random-agent平衡速度与隐蔽性,降低拦截率
  • –predict-output:用于通过预测常见查询结果来优化扫描效率的核心参数,尤其适用于大规模目标扫描或需快速完成初步探测的场景

  • 核心功能:

  • 预测机制:

  • 技术原理:–predict-output 通过比对目标响应与内置统计表(common-outputs.txt),提前预测常见查询结果(如数据库版本、用户名、表名等),从而跳过重复测试步骤
    - 优化效果:减少无效请求次数,显著提升盲注(布尔/时间盲注)场景的扫描速度,尤其在目标返回结果高度可预测时效率提升30%以上

-依赖条件:

  • 统计表路径:默认位于 /usr/share/sqlmap/txt/common-outputs.txt,包含预定义的常见输出值(如 @@version、user() 等)
    兼容性限制与 --threads 参数互斥(因预测需顺序执行请求),且仅对特定注入技术(盲注)有效

  • -典型用法:

  • 基础命令:sqlmap -u "

    http://192.168.137.1/?id=1" --predict-output
    
  • 作用:启用预测输出模式,自动跳过已知结果检测,适用于布尔盲注或时间盲注场景

  • 联合其他优化参数:若需进一步提速,可结合 --null-connection(仅获取响应头大小)

  • sqlmap -u "

     http://192.168.137.1/login.php" --data="user=admin" --predict-output --null-connection
    
    • 效果
  • 预测输出减少有效载荷测试次数
    - 空连接避免下载响应体,节省带宽

  • 自定义统计表:若目标使用非标准输出(如自定义错误消息),可编辑统计表增强预测准确性

  • sqlmap -u “http://192.168.137.1/api” --predict-output --common-outputs=/path/custom-outputs.txt

  • 注意事项:

  • 适用场景限制:

  • 有效场景:目标返回结果高度规律化(如固定错误格式、标准数据库函数输出)
    无效场景:目标响应随机性强或需复杂运算(如加密参数、动态令牌),预测可能失效甚至导致漏报

-性能与风险平衡:

-误报风险:若统计表未覆盖目标特征,可能跳过真实漏洞检测(建议首次扫描时不启用)
- 替代方案

场景推荐方案优势
高随机性目标–threads=5±-delay=1并发提速同时降低误报率
严格 WAF 环境–tamper=space2comment混淆载荷绕过关键词检测
需完整响应分析禁用预测,启用-v 3调试确保全量检测准确性
  • 优先启用条件:目标响应高度可预测 + 盲注技术为主 + 无需并发扫描时

    • 操作流程
  • 首次扫描禁用预测(–predict-output),通过 -v 3 分析目标响应模式
    - 若响应符合常见模式,二次扫描启用预测并验证结果一致性
    - 高频扫描场景下,将目标特征添加到自定义统计表持续优化

–keep-alive:用于启用 HTTP 持久连接(HTTP Keep-Alive) 的性能优化参数,通过复用 TCP 连接减少重复握手开销,显著提升扫描效率

  • 核心功能:

  • HTTP Keep-Alive 机制:

  • 技术原理

  • 默认 HTTP 连接为短连接(Connection: close),每次请求需重新建立 TCP 三次握手,消耗额外时间和资源
    - 启用 --keep-alive 后,请求头添加 Connection: keep-alive,复用同一 TCP 连接发送多个 HTTP 请求,避免重复握手

  • 优化效果:

  • 减少网络延迟,提升扫描速度 30%~50%(尤其在高延迟网络或大规模目标扫描中)
    - 降低系统资源占用(CPU/内存)

  • 与 TCP Keepalive 的区别:

  • HTTP Keep-Alive:应用层(第七层)协议,由 sqlmap 控制,复用连接传输多个 HTTP 报文
    - TCP Keepalive:传输层(第四层)保活机制,由操作系统内核实现,用于检测连接存活状态(默认超时 2 小时)
    - ⚠️ 两者功能独立,sqlmap 的 --keep-alive 仅实现 HTTP 层的连接复用

  • 典型用法:

  • 基础命令:sqlmap -u "

    http://192.168.137.1/?id=1" --keep-alive
    
  • 作用:对目标 URL 启用持久连接,自动添加 Connection: keep-alive 请求头

  • 联合其他优化参数:

  • 减少响应体下载(盲注场景): sqlmap -u “http://192.168.137.1/login.php” --data=“user=admin” --keep-alive --null-connection

  • –null-connection:不下载响应体,仅通过响应头大小判断注入结果,节省带宽

  • **提升并发效率:**sqlmap -u “http://192.168.137.1/login.php” --keep-alive --threads=5

  • –threads:设置并发线程数(默认 1,最大 10),需避免过高导致目标服务器过载

一键开启所有优化:sqlmap -u “http://192.168.137.1/login.php” -o

  • -o 参数自动启用 --keep-alive、–null-connection 和 --threads=3,适合快速扫描

    • 注意事项:
      • 兼容性问题:
        • 代理冲突:若使用 --proxy 指定代理(如 Burp Suite),部分代理可能不支持持久连接,需关闭 --keep-alive
        • 服务端限制:目标服务器需支持 HTTP/1.1 协议,否则返回 400 Bad Request
      • 性能与风险平衡:
        • 长连接风险:高频复用连接易被 WAF 识别为异常行为(如请求速率过快),建议配合 --delay 设置请求间隔
        • 替代方案
          • 严格 WAF 环境:启用 --random-agent 伪装浏览器 UA
          • 需维持会话:使用 --safe-url=/health 定期访问无害页面刷新连接
      • **日志验证:**通过 -v 3 查看实际请求头,确认 Connection: keep-alive 生效
      • 核心价值:–keep-alive 通过复用 TCP 连接显著降低扫描延迟,尤其适合需连续发送大量请求的场景(如布尔盲注、大规模枚举)
      • 最佳实践
        • 首次扫描建议启用 -o 自动优化
        • 高敏感环境需搭配 --delay 和 --random-agent 规避风控
        • 通过 -v 3 验证请求头,确保参数生效
      • 进阶提示:研究目标服务器对 Keep-Alive 的支持性(如响应头含 Keep-Alive: timeout=5, max=100),动态调整超时策略
    • 实战场景建议:
场景推荐命令优化目标
常规漏洞扫描sqlmap -u “URL” --keep-alive减少连接开销,加速探测过程
盲注测试(高延迟网络)sqlmap -u “URL” --keep-alive --null-connection避免下载响应体,节省带宽
批量目标扫描sqlmap -m urls.txt --keep-alive --threads=8提升并发效率,适配多目标
严格 WAF 环境sqlmap -u “URL” --keep-alive --delay=2 --random-agent平衡速度与隐蔽性,降低拦截率
  • –null-connection:用于优化布尔盲注和时间盲注扫描性能的关键参数,通过仅获取 HTTP 响应头大小(不下载响应体)来大幅减少带宽消耗

    • 核心原理:
      • 空连接机制:发送特殊 HTTP 请求(如 HEAD 或带 Range 头的请求),使服务器返回响应头信息但不返回响应体内容。通过对比不同注入条件下的响应头大小(如 Content-Length)判断注入结果
      • 优化效果
        • 节省带宽:响应体体积越大,节省效果越显著(如页面含大量图片或脚本时)
        • 提升速度:减少数据传输时间,尤其在高延迟网络环境中效果明显
    • 适用场景:
      • 布尔盲注(Boolean-based Blind):通过响应差异(真/假条件)判断注入结果
      • 时间盲注(Time-based Blind):依赖响应时间差异,但 --null-connection 仅优化响应头获取,仍需完整请求测试时间延迟
      • 严格带宽限制环境:如移动网络或低速 VPN 连接
      • ⚠️限制
        • 仅适用于盲注场景(非报错注入或联合查询注入)
        • 需目标服务器支持 HEAD 请求或 Range 头处理,否则可能返回 400 Bad Request
    • 典型用法:
      • 基础命令:sqlmap -u "

        http://192.168.137.1/?id=1" --null-connection

        • 作用:启用空连接模式,所有请求仅获取响应头信息
      • 联合其他优化参数:
        • 减少连接开销(长连接复用): sqlmap -u “http://192.168.137.1/login.php” --null-connection --keep-alive

        • 一键优化组合

          (推荐):sqlmap -u "

          http://192.168.137.1/api" -o

          • 等效同时启用 --null-connection + --keep-alive + --threads=3
      • 自定义处理逻辑:若目标服务器不支持默认空连接方式,可尝试以下方案
        • 强制 HEAD 请求

          (需服务器支持):sqlmap -u "

          http://192.168.137.1" --method=HEAD --null-connection

        • 回退到部分响应体下载

          (牺牲部分性能):sqlmap -u "

          http://192.168.137.1" --text-only

          • 仅下载文本内容(过滤图片/脚本)
    • 注意事项:
      • 兼容性问题:
        • 服务器限制:部分服务器(如 Nginx 严格模式)可能拒绝非常规 Range 请求,需关闭参数或切换技术
        • WAF 干扰:空连接可能被 WAF 标记为异常行为,需配合 --random-agent 和 --delay=2 降低风险
      • 误判风险:
        • 动态内容干扰

          :若响应头 Content-Length 因动态广告/脚本而变化,可能导致盲注结果错误。可通过以下方式缓解:sqlmap -u "

          http://192.168.137.1" --null-connection --safe-url=“/static-page” #定期访问稳定页面校准基准值

      • 性能对比:
场景无优化启用**–null-connection**优化效果
10 MB 响应体的布尔盲注下载 10 MB/请求仅下载 1 KB/请求带宽节省99%
高延迟网络(200ms RTT)总耗时 30 分钟总耗时 8 分钟速度提升73%
      • 优先使用场景:布尔盲注 + 大响应体目标 + 带宽敏感环境
      • 避坑指南:
        • 首次扫描时通过 -v 3 验证空连接是否生效(检查日志中的 Content-Length)
        • 若服务器返回 400 错误,改用 --text-only 或关闭参数
        • 避免与 --html-file 等需完整响应体的参数联用
      • 进阶技巧:结合 --eval 脚本动态校准响应基准值(如提取稳定页面的固定头信息)
  • –threads:用于控制并发请求线程数的核心性能优化参数,通过增加并行请求数量显著提升扫描效率,尤其在批量目标或高延迟网络环境中效果显著

    • 核心功能:
      • 技术原理:通过创建多个线程同时发送探测请求,利用多核 CPU 并行处理能力,减少总扫描时间
      • 默认值:默认线程数为 1(单线程),最大可设置为 10(需修改源码解除限制)
      • 性能对比(实测场景):
线程数单目标扫描耗时(100请求)带宽占用峰值
1(默认)120秒
540秒(提速67%)
1025秒(提速79%)
    • 适用场景:
      • 批量扫描:配合 -m 参数处理多个目标(如 -m urls.txt --threads=5)
      • 盲注优化:联合 --null-connection 减少响应体下载,加速布尔盲注
      • 高配置环境:多核服务器或低负载目标环境
    • 典型用法:
      • 基础命令:sqlmap -u "

        http://192.168.137.1/?id=1" --threads=5

        • 作用:设置 5个线程并发扫描
      • 联合其他参数优化:
        • 避免触发WAF:配合延时与随机UA降低风控
          • sqlmap -u "

            http://192.168.137.1/data" --threads=8 --delay=1 --random-agent

        • 空连接节省带宽:仅获取响应头大小
          • sqlmap -u "

            http://192.168.137.1/login.php" --threads=6 --null-connection

      • 一键性能组合:

        sqlmap -u "

        http://192.168.137.1/api" -o

        • 等效同时启用 --null-connection + --keep-alive + --threads=3
    • 注意事项:
      • 服务器过载风险:
        • 问题:线程数过高可能导致目标服务器崩溃或触发IP封禁
        • 建议
          • 首次扫描从低线程开始(如 --threads=3),逐步增加
          • 监控目标响应状态(如返回5xx错误时降低线程数)
      • 技术限制与冲突:
        • 与预测输出互斥:–predict-output 需顺序处理请求,不可与 --threads 联用
        • 代理兼容性:部分代理服务器(如Burp)可能不支持高并发,需测试验证

性能平衡建议:

场景推荐线程数配套参数
严格WAF环境3~5–delay=2 --tamper=space2comment
严格WAF环境3~5–delay=2 --tamper=space2comment
云服务器批量任务5~6-m targets.txt --batch

线程设置原则

起步值:默认1 → 低风险目标可设为 CPU核心数×2(如4核设8线程)
上限控制勿超过10(源码限制),敏感环境建议≤5

进阶提示

-修改 sqlmap.conf 中 max_threads=20 可解除10线程限制(需重新编译)
- 结合 --eval 动态调整线程数(如根据响应时间自动降频)

题外话

黑客/网络安全学习路线

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

网络安全学习资源分享:

下面给大家分享一份2025最新版的网络安全学习路线资料,帮助新人小白更系统、更快速的学习黑客技术!

一、2025最新网络安全学习路线

一个明确的学习路线可以帮助新人了解从哪里开始,按照什么顺序学习,以及需要掌握哪些知识点。

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

读者福利 | 优快云大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)

我们把学习路线分成L1到L4四个阶段,一步步带你从入门到进阶,从理论到实战。


在这里插入图片描述

L1级别:网络安全的基础入门

L1阶段:我们会去了解计算机网络的基础知识,以及网络安全在行业的应用和分析;学习理解安全基础的核心原理,关键技术,以及PHP编程基础;通过证书考试,可以获得NISP/CISP。可就业安全运维工程师、等保测评工程师。


在这里插入图片描述

L2级别:网络安全的技术进阶

L2阶段我们会去学习渗透测试:包括情报收集、弱口令与口令爆破以及各大类型漏洞,还有漏洞挖掘和安全检查项目,可参加CISP-PTE证书考试。


在这里插入图片描述

L3级别:网络安全的高阶提升

L3阶段:我们会去学习反序列漏洞、RCE漏洞,也会学习到内网渗透实战、靶场实战和技术提取技术,系统学习Python编程和实战。参加CISP-PTE考试。


在这里插入图片描述

L4级别:网络安全的项目实战

L4阶段:我们会更加深入进行实战训练,包括代码审计、应急响应、红蓝对抗以及SRC的挖掘技术。并学习CTF夺旗赛的要点和刷题


在这里插入图片描述

整个网络安全学习路线L1主要是对计算机网络安全的理论基础的一个学习掌握;而L3 L4更多的是通过项目实战来掌握核心技术,针对以上网安的学习路线我们也整理了对应的学习视频教程,和配套的学习资料。

二、技术文档和经典PDF书籍

书籍和学习文档资料是学习网络安全过程中必不可少的,我自己整理技术文档,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,(书籍含电子版PDF)


在这里插入图片描述

三、网络安全视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的网安视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。


在这里插入图片描述

四、网络安全护网行动/CTF比赛

学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。


在这里插入图片描述

五、网络安全工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。

在这里插入图片描述

面试不仅是技术的较量,更需要充分的准备。

在你已经掌握了技术之后,就需要开始准备面试,我们将提供精心整理的网安面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…


在这里插入图片描述


img

**读者福利 |** 优快云大礼包:《网络安全入门&进阶学习资源包》免费分享 (安全链接,放心点击)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值