文章总结: 这篇文档详细介绍了SQLmap工具的基础使用方法,包括目标指定、脱库功能和WAF绕过技术。文章提供了多种绕过WAF的脚本和技巧,如使用特殊编码、替换关键字等方法。还给出了一些实用的参数设置建议,如调整level等级、处理HTTPS请求、控制请求频率等,帮助安全人员更有效地进行SQL注入检测和渗透测试工作。
综合评分: 82
文章分类: 渗透测试,WEB安全,漏洞分析,安全工具,红队
SQLmap使用教程
原创
信安路漫漫
信安路漫漫
2025年11月8日 07:01
上海
SQLmap基础使用
目标指定方法
脱库功能详解
默认获取所有的数据,可以使用–start –stop指定开始和结束的行,只获取一部分数据
sqlmap -u ‘http://xx/?id=1’ -D ‘security’ -T ‘users’ –start 1 –stop 5 –dump
WAF绕过技术
sqlmap中的部分脚本
apostrophemask.py 用UTF-8全角字符替换单引号字符apostrophenullencode.py 用非法双字节unicode字符替换单引号字符appendnullbyte.py 在payload末尾添加空字符编码base64encode.py 对给定的payload全部字符使用Base64编码between.py 分别用“NOT BETWEEN 0 AND #”替换大于号“>”,“BETWEEN # AND #”替换等于号“=”bluecoat.py 在SQL语句之后用有效的随机空白符替换空格符,随后用“LIKE”替换等于号“=”chardoubleencode.py 对给定的payload全部字符使用双重URL编码(不处理已经编码的字符)charencode.py 对给定的payload全部字符使用URL编码(不处理已经编码的字符)charunicodeencode.py 对给定的payload的非编码字符使用Unicode URL编码(不处理已经编码的字符)concat2concatws.py 用“CONCAT_WS(MID(CHAR(0), 0, 0), A, B)”替换像“CONCAT(A, B)”的实例equaltolike.py 用“LIKE”运算符替换全部等于号“=”greatest.py 用“GREATEST”函数替换大于号“>”halfversionedmorekeywords.py 在每个关键字之前添加MySQL注释ifnull2ifisnull.py 用“IF(ISNULL(A), B, A)”替换像“IFNULL(A, B)”的实例lowercase.py 用小写值替换每个关键字字符modsecurityversioned.py 用注释包围完整的查询modsecurityzeroversioned.py 用当中带有数字零的注释包围完整的查询multiplespaces.py 在SQL关键字周围添加多个空格nonrecursivereplacement.py 用representations替换预定义SQL关键字,适用于过滤器overlongutf8.py 转换给定的payload当中的所有字符percentage.py 在每个字符之前添加一个百分号randomcase.py 随机转换每个关键字字符的大小写randomcomments.py 向SQL关键字中插入随机注释securesphere.py 添加经过特殊构造的字符串sp_password.py 向payload末尾添加“sp_password” for automatic obfuscation from DBMS logsspace2comment.py 用“/**/”替换空格符space2dash.py 用破折号注释符“--”其次是一个随机字符串和一个换行符替换空格符space2hash.py 用磅注释符“#”其次是一个随机字符串和一个换行符替换空格符space2morehash.py 用磅注释符“#”其次是一个随机字符串和一个换行符替换空格符space2mssqlblank.py 用一组有效的备选字符集当中的随机空白符替换空格符space2mssqlhash.py 用磅注释符“#”其次是一个换行符替换空格符space2mysqlblank.py 用一组有效的备选字符集当中的随机空白符替换空格符space2mysqldash.py 用破折号注释符“--”其次是一个换行符替换空格符space2plus.py 用加号“+”替换空格符space2randomblank.py 用一组有效的备选字符集当中的随机空白符替换空格符unionalltounion.py 用“UNION SELECT”替换“UNION ALL SELECT”unmagicquotes.py 用一个多字节组合%bf%27和末尾通用注释一起替换空格符 宽字节注入varnish.py 添加一个HTTP头“X-originating-IP”来绕过WAFversionedkeywords.py 用MySQL注释包围每个非函数关键字versionedmorekeywords.py 用MySQL注释包围每个关键字xforwardedfor.py 添加一个伪造的HTTP头“X-Forwarded-For”来绕过WAF
其它常用参数
技巧
1)修改–level等级
参数–level共有五个等级,默认为1,sqlmap使用的payload可以在xml/payloads.xml中看到,你也可以根据相应的格式添加自己的payload。这个参数不仅影响使用哪些payload同时也会影响测试的注入点,GET和POST的数据都会测试,HTTP Cookie在level为2的时候就会测试,HTTP User-Agent/Referer头在level为3的时候就会测试。
2)https请求带上–force-ssl参数
3)有时使用过于频繁可能会被防火墙或者其他设备拦截,可以使用–delay和–threads参数。
–delay 表示两个请求之间延迟几秒
–threads 表示使用几个线程
4)如果知道使用的是什么数据库,可以使用–dbms来指定数据库,这样可以减少发送的请求
–dbms=”Microsoft SQL Server”
5)也可以使用–technique来指定要使用的注入方式。
SQLMAP 中把注入技术分为以下 6 种,分别为 报错注入(Error-based)、联合查询(Union queries)、堆叠查询(Stack queries)、布尔盲注(Boolean-based blind)、延时盲注(Time-based blind)、内联查询(inline queries)
6)如果程序使用了过滤,可以加载sqlmap脚本尝试绕过过滤。参数为–tamper name.py
参考链接
https://blog.csdn.net/ewii12567/article/details/145995372
https://developer.aliyun.com/article/1619347
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:信安路漫漫 信安路漫漫《SQLmap使用教程》