前言
在上一篇《SQL注入手工实战详解》中,我们完整熟悉了手工注入的核心思路与实战流程。大家可能会有一个疑问:既然手工注入这么重要,为什么还要学 sqlmap?
其实,手工注入是底线能力,sqlmap是效率工具,二者不是替代关系,是互补关系。
在真实的 SRC 挖洞、渗透测试场景中:简单漏洞靠工具扫描、复杂的漏洞靠手工、批量资产靠工具、疑难绕过WAF靠手工。
本文基于sqlmap的基础用法,专注实战用法、踩坑点、WAF绕过、盲注优化、工具局限性,完全适配日常渗透测试与SRC漏洞挖掘。
一、重新认知:Sqlmap 的真实定位
很多人在挖漏洞时只无脑跑 sqlmap,结果就是:扫出真正高危洞的效率不高。
Sqlmap 核心优势:
- 自动化探测海量注入 payload,覆盖人工容易遗漏的闭合方式
- 全自动处理布尔盲注、时间盲注,节省海量手工猜解时间(看过我第一篇文章的看到这应该很舒服了)
- 支持 Cookie、Token、代理、批量扫描、自定义脚本拓展
Sqlmap 致命短板(实战必懂):
- 默认流量特征极强,极易被 WAF、云防护拦截(目前市场上主流的网站都会部署W(web)A(aplication)F(firewall)防火墙)
- 无法智能绕过过滤、双写、大小写、空格替换等自定义防护
- 无法识别伪静态、隐藏参数、复杂业务鉴权注入点
挖掘思路:先手工判断注入点,再用sqlmap打数据,是最高效的实战流程。
二、Sqlmap 配置
基于可能大部分人用的都是windows主机,这里就讲一下怎么在windows上配置sqlmap。首先我们打开gtihub上sqlmap源码的网址https://github.com/sqlmapproject/sqlmap选择下载源码,下载压缩包(如果下载速度太慢或者连不上github可以选择在国内的镜像站下载),然后我们解压到全英文路径下,在解压好的文件夹下右键打开终端,然后我们输入python的命令来测试sqlmap是否已经能使用(如下图)能看到sqlmap的标志性文字logo证明我们sqlmap可以运行啦
三、Sqlmap 基础核心命令(实战常用精简版)
只保留挖洞高频命令,拒绝冗余参数。
1. 基础探测注入
sqlmap -u "http://xxx.com?id=1"
2. 携带 Cookie 登录态探测(SRC高频)
sqlmap -u "url" --cookie="登录cookie"
3. 批量扫描请求包(最推荐、最贴合实战)
Burp(关于这个的使用教程后续会发) 抓包保存为 txt,直接加载数据包扫描:
sqlmap -r request.txt
4. 直接脱库、查表、查字段
- 查库:--dbs
- 查表:--tables -D 库名
- 查字段:--columns -D 库名 -T 表名
- 查数据:--dump -D 库名 -T 表名 -C 字段名
四、高阶核心:Sqlmap 实战避坑
坑1:默认扫描速度太慢,盲注超时
默认线程低、延迟高,面对时间盲注几乎跑不出结果。
优化参数:
--threads 10 --delay 0.1
提升线程数、降低请求间隔,大幅提升盲注效率(但是在实战中要注意网站的WAF拦截规则,高线程可能会被拦截)
坑2:WAF 拦截默认 payload,直接误报无漏洞
解决方式:随机UA、随机延迟、伪造请求头
--random-agent --tamper=space2comment
space2comment:空格替换/**/,绕过基础空格过滤。
坑3:页面存在跳转、302 导致扫描失效
添加跟随跳转参数:
--follow-redirects
坑4:重复扫描、缓存结果导致判断错误
当结果异常,缓存污染,重复扫描判断错误时,按需使用:
--flush-session
五、核心进阶:Tamper 脚本绕过(实战挖洞常用)
Tamper 是 sqlmap 高阶能力的核心。默认自带数十种绕过脚本,应对常见防护。
常用实战 Tamper 清单
- space2comment:空格替换为注释,绕过空格过滤
- randomcase:关键字随机大小写绕过,绕过简单正则拦截
- doubleencode:双重URL编码,绕过基础编码过滤
- charunicodeencode:Unicode编码绕过部分国产WAF
组合使用示例(实战常用组合):
sqlmap -r 1.txt --tamper=space2comment,randomcase --random-agent --flush-session
六、深度原理:为什么工具扫不出「真实高危注入」
这里结合上一篇手工注入内容,做闭环总结:
很多 SRC 站点存在自定义轻量过滤:
禁止空格、禁止union、禁止select、拦截and/or
此时 sqlmap 默认 payload 全部失效,直接判定无漏洞。
但人工可以轻松绕过:
- 空格替换 %09、%0a、/**/
- 关键字双写绕过:selselectect
- 异或、或逻辑替代and/or
这就是为什么:手工是下限,工具是上限。不会手工,永远挖不到高质量漏洞。
七、实战标准流程(面试/SRC通用标准答案)
总结出一套行业通用的注入测试流程,完全适配真实渗透:
1. 手工判断:单引号、逻辑真假、闭合方式确认
2. 手工尝试简单绕过:空格替换、大小写测试
3. 工具批量探测:sqlmap加载数据包,携带tamper绕过,注意WAF拦截
4. 工具无法利用则回归手工:盲注手工判断、特殊闭合绕过
八、渗透测试规范(新人必守,避免违规)
在 SRC 挖洞、授权测试中,严格遵守:
- 禁止大线程、高频批量扫描,避免打垮业务系统
- 禁止批量脱库、导出用户隐私数据
- 仅做漏洞验证、证明漏洞存在即可
结语
到此,我们完成了SQL注入手工实战 + Sqlmap高阶工具完整闭环学习,后面博主还会出关于SQL注入的文章,是偏向于WAF绕过环节的,会用SQL注入来举例。
许多人的误区就是二选一:要么只用手工、要么只用工具。想要提升挖洞效率,二者要相结合,手工定思路,工具提效率。
下一篇预告:XSS跨站脚本攻击完整实战(反射型/存储型/DOM型 + SRC真实挖掘思路)(新的攻击方式要来啦),也是非常容易出SRC漏洞的核心方向。
声明:本文所有内容仅用于本地靶场学习,未经授权不得对互联网任何真实网站进行渗透测试