SQLMAP插件tamper编写与使用详解
作者:永远是少年啊 发布时间:2024-01-14 02:13:08
今天继续给大家介绍渗透测试相关知识,本文主要内容是SQLMAP插件tamper编写与使用。
免责声明:
本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负!
再次强调:严禁对未授权设备进行渗透测试!
一、SQLMAP插件tamper简介
我们在安装SQLMAP后,一般来说会有一个名为tamper的目录,如下所示:
在该目录下,有很多python脚本,如下所示:
这些python脚本,就是sqlmap的插件,tamper翻译成中文是过滤的意思,这些脚本,对sqlmap的payload进行一定的修改,将其中容易被拦截的关键字等过滤成可以绕过的形式,因此,这些脚本中的内容大多是一些替换,其中一个脚本的内容如下所示:
相关tamper脚本的功能介绍请查看文章:SQLMAP插件tamper模块介绍
二、SQLMAP插件tamper使用
上面我们介绍了SQLMAP插件tamper,而我们在使用SQLMAP对目标站点尝试进行SQL注入的时候,我们应该如何使用tamper插件呢。其实非常简单,只需要在使用SQLMAP命令的时候,添加–tamper,并指定tamper的名称即可,例如,我们执行命令:
python .\sqlmap.py -u http://127.0.0.1/sqli/Less-1/?id=1 --tamper randomcase --proxy=http://127.0.0.1:8080
该命令使用了–proxy参数来指定代理,这样可以使得我们使用burpsuit方便我们查看SQLMAP发送的数据包payload,burpsuit抓取到的数据包如下所示:
从上图可以看出,数据包中的payload进行了大小写随机转换的处理,tamper插件发挥作用。
三、SQLMAP插件tamper编写
最后,我们来简单介绍一下tamper插件的编写逻辑。
实际上,尽管SQLMAP自带有很多插件,但是这些插件均不能绕过当前使用的主流服务器安全防护软件。因此,我们如果要使用SQLMAP来进行SQL注入的渗透测试,经常需要自己手动编写tamper插件。
tamper插件的编写逻辑很简单,一个典型的tamper插件如下图所示:
从上图中可以看出,该插件的逻辑非常简单,输入的是原始的payload,该脚本会对payload进行处理后,然后输出处理后的payload,其核心处理语句如下所示:
retVal = re.sub(r"\s*=\s*", " LIKE ", retVal)
re.sub是依据正则表达式的替换函数,在该实例中,该函数使用了3个参数,第一个参数为正则表达式,第二个参数为要被替换成的字符,第三个参数为要检索的字符串。
该脚本的作用是,检索retVal字符串中符合该正则表达式的值,并且用LIKE替换,因此就起到了替换payload中的等号“=”,并且使用LIKE替换的目的。
因此,如果我们要编写自己的tamper插件,也可以参考上述逻辑,进行payload的替换,由于其格式是相同的,因此我们可以直接参考现有tamper格式,然后写入自己的内部逻辑,并最终生成一个py脚本,放到tamper目录下即可。
来源:https://blog.csdn.net/weixin_40228200/article/details/126511769


猜你喜欢
- 数据可视化是数据科学或机器学习项目中十分重要的一环。通常,你需要在项目初期进行探索性的数据分析(EDA),从而对数据有一定的了解,而且创建可
- PyQt5中QInputDialog的使用,Qt的QInputDialog类提供了一种简单方面的对话框来获得用户的单个输入信息,它提供了4种
- 编码问题response = requests.get(URL, params=params, he
- 这种问题一般是退出flask服务时选择了disconected而不是选择terminate,dicconected是一种伪断开,只是在pyc
- 说明1、字典中没有下标的概念,使用key值访问字典中对应的value值。当访问的key值不存在时,代码会报错。2、get('key&
- 从句法上看,协程与生成器类似,都是定义体中包含 yield 关键字的函数。可是,在协程中, yield 通常出现在表达式的右边(例如, da
- 写在前面:这次我主要想总结一下微信小程序实现上下滚动消息提醒,主要是利用swiper组件来实现,swiper组件在小程序中是滑块视图容器。我
- 使用python实现文件导入,具体方法如下:文件样例可以自己random这里的temp1根据每一行的分隔符来读入,‘\n'表述回车t
- 本文实例讲述了Python使用type动态创建类操作。分享给大家供大家参考,具体如下:使用type动态创建类动态语言和静态语言最大的不同,就
- 修改字符串本身是不可能的,因为字符串是不可变类型,只能是通过某些方法来产生它的副本。再把副本赋值给原字符串,达到类似替换的作用。这里介绍几种
- 环境系统 : win 10 显卡:gtx965m cpu :i7-6700HQ python 3.61 pytorch 0.3包引用impo
- 本文实例讲述了php面象对象数据库操作类。分享给大家供大家参考。具体实现代码如下://此处构造一个数据库操作类,封装所有数据库操作 //可以
- 点击顶部的“SQL”标签进入sql命令输入界面。输入以下命令:update mysql.user set password=PASSWORD
- 扩展Code:var blogModule = (function (my) { my.AddPhoto = function (
- 生成器是 Python 的基本组成部分。生成器是一个至少有一个“yield”表达式的函数。它们是可以
- 考虑到女友的安全问题,就做了一个app实现定位和服务器实现转发的东西。刚学python,竟没想到用对象编程会更加方便,全程过程式开发,代码有
- 通过Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案。主要原因是有些论文打印出是黑白色的,不同类别
- 图像增强算子几何变换算子图像的几何变换又称为图像空间变换, 它将一幅图像中的坐标位置映射到另一幅图像中的新坐标位置。图像缩放缩放只是调整图像
- 我就废话不多说了,大家还是直接看代码吧!# -*- coding: utf-8 -*-"""Created o
- 通常的聊天室所采用的程序,也就是Chat程序了,其基本结构原理是不会采用到数据库的。那究竟采用什么技术呢?我们知道ASP变量当中Sessio