sqlmap --tamper 绕过WAF脚本分类整理
发布日期:2021-05-15 00:59:44 浏览次数:17 分类:精选文章

本文共 1792 字,大约阅读时间需要 5 分钟。

这样,你刚刚提供的文字内容看起来像是某技术文章或者教程的内容,可能需要进行重新优化处理以符合特定的要求。以下是优化后的版本:


当你在注入过程中遇到提示框提示,内心可能会有无数的草泥马在奔腾。尽管如此,有时候你仍然得冷静下来分析过滤系统到底过滤了哪些参数,该如何绕过。SQLMap中的Tamper脚本为我们提供了很多防过滤的方法,但如果你不知道如何有效地使用这些脚本,可能会让人感到困惑。

在使用脚本之前,首先需要明确系统过滤了哪些关键字。例如,单引号、空格、selectunionadmin等。有时候,你可能会发现注入成功但无法获取数据,这可能是因为某些关键字被过滤了。例如,select被过滤的情况。

要判断系统过滤了哪些关键字,手工在URL参数中添加关键词是个简单的方法。你可以尝试直接添加单引号、空格、等于号等,观察是否被过滤。

例如:

  • 添加单引号被过滤,说明单引号不可用。
  • 空格或等于号没有被过滤,会报错。
  • select被过滤。

通过这种方式,当SQLMap注入出现问题时,比如无法获取数据,你就可以检查对应的关键词是否被过滤了。例如,空格被过滤可以使用space2comment.py,过滤系统对大小写敏感可以使用randomcase.py等。

接下来,我们详细讲解SQLMap的Tamper参数。


以下是SQLMap Tamper脚本的使用方法: 根据实际情况,可以同时使用多个脚本。使用-v参数可以查看payload的变化。 示例:

sqlmap.py -u "http://www.target.com/test.php?id=12" --dbms mysql --tamper "space2comment,versionedmorekeywords.py" -v 3 --dbs

以下是各脚本的分类说明:

数据库类型 编号 脚本名称 作用 实现方式
所有数据库 1 apostrophemask.py 用UTF-8代替引号。 (1 AND '1'='1') 转换为 ('1 AND '1'='1')。
所有数据库 2 base64encode.py 用Base64编码替换。 ('1' AND SLEEP(5)) 转换为 MScgQU5EIFNMRUVQKDUpIw==
所有数据库 3 multiplespaces.py 围绕SQL关键字添加多个空格。 ('1 UNION SELECT foobar') 转换为 1 UNION SELECT foobar
所有数据库 4 space2plus.py 用加号替代空格。 ('SELECT id FROM users') 转换为 SELECT+id+FROM+users
所有数据库 5 nonrecursivereplacement.py 用特定的字符串替代SQL关键字。 ('1 UNION SELECT 2--') 转换为 '1 UNIOUNIONN SELECT 2--'
所有数据库 6 space2randomblank.py 替换空格为随机空白字符。 ('SELECT id FROM users') 转换为 SELECT%0Did%0DFROM%0Ausers
MySQL >=5.1.13 7 unionalltounion.py 替换UNION ALL SELECT为UNION SELECT。 ('-1 UNION ALL SELECT') 转换为 '-1 UNION SELECT'
MySQL >=5.1 8 space2mysqldash.py 替换空格为注释和新行符。 ('1 AND 9227=9227') 转换为 '1--%0AAND--%0A9227=9227'
PostgreSQL 9 space2comment.py 替换空格为评论字符(/**/)。 ('SELECT id FROM users') 转换为 SELECT//id//FROM/**/users

通过合理组合不同的Tamper脚本,可以有效绕过不同的过滤机制。例如,使用space2comment.pyversionedmorekeywords.py可以同时绕过空格和关键字过滤。


以上是对SQLMap Tamper脚本的分类说明和实际应用示例。希望对你有所帮助!

上一篇:CSRF自动化测试-CSRFTester
下一篇:AWVS扫描器使用入门

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2025年04月11日 02时47分04秒