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"
-
-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
-
-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:目标数据库名
- DBMS:数据库类型(如 mysql、mssql)。
-
-l :可以直接把Burp proxy或者WebScarab proxy中的日志直接倒出来交给sqlmap来一个一个检测是否有注入
-
需要保存为 .txt 或 .xml文件
-
-
-
-m:可以将多个url填入文件,对文件中的多个URL进行测试
-
-r :可以将http请求包放入一个文本中,然后从一个文本文件中对http请求的一个参数进行测试,参数可以通过*号来固定要测试的位置,这样就可以跳过设置一些其他参数(比如cookie,POST数据,等等)
-
-
-
-c :从配置文件加载运行参数,简化复杂命令的输入流程,适用于需要复用多参数组合的场景(配置文件中的参数优先级低于命令行)
-
文件路径:默认名为 sqlmap.conf,支持任意路径,建议使用绝对路径避免加载失败(如 ~/.sqlmaprc)
语法规则: -
每行一个参数,格式为 参数名=值
- 忽略空行和以 # 开头的注释行
-
注意事项:
-
命令行参数 > 配置文件参数(若冲突,以命令行输入为准)
-
例如:命令行指定 --level=5 会覆盖配置文件中的 level=3
-
确保当前用户对配置文件和输出目录有读写权限
-
优势:
-简化复杂命令,提升渗透测试效率(比如把常用的高频参数写入文件中,下次直接指定文件即可,不需要每次都输入命令)
- 支持团队标准化配置,减少人为错误
- 将高频参数(如 --tamper、–proxy)固化到配置文件
- 结合 --update 定期同步最新漏洞检测规则
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秒 | 低 |
5 | 40秒(提速67%) | 中 |
10 | 25秒(提速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…


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