【sql注入-WAF绕过】编写sqlmap的tamper进行sql注入

news2024/11/17 15:52:27

目录

编写sqlmap的绕过脚本

二、理论知识2

sqlmap的tamper脚本

三、实战部分




一、理论知识1

编写sqlmap的绕过脚本

编写sqlmap的一个简单WAF绕过脚本

#!/usr/bin/env python

"""
Copyright (c) 2006-2023 sqlmap developers (https://sqlmap.org/)
See the file 'LICENSE' for copying permission
"""

from lib.core.compat import xrange
from lib.core.enums import PRIORITY

__priority__ = PRIORITY.LOW

def dependencies():
    pass

def tamper(payload, **kwargs):

    hex_str = ''.join([r'~' + hex(ord(c))[2:].zfill(2) for c in payload])
    return hex_str

挑重点来讲述一下:

核心代码:

hex_str = ''.join([r'~' + hex(ord(c))[2:].zfill(2) for c in payload])

实现功能:

使用列表推导式将给定的payload字符串转换为一个十六进制字符串。它遍历payload中的每个字符,将其转换为ASCII码的十六进制表示,并在前面添加~符号和适当的填充零。最后,使用''.join()方法将所有转换后的十六进制字符串连接成一个字符串

函数含义:

1、hex_str = ''

 定义一个空字符串,用于存储最终的十六进制表示。

2、[r'~' + hex(ord(c))[2:].zfill(2) for c in payload]

 这是一个列表推导式(list comprehension),用于遍历字符串 payload 中的每个字符并进行处理。对于每个字符 c,它会执行以下操作:

  • ord(c): 将字符转换为对应的 ASCII 值。
  • hex(...): 将 ASCII 值转换为十六进制字符串。
  • [2:]: 切片操作,去掉十六进制字符串中的前缀部分。
  • zfill(2): 如果十六进制字符串长度不足两位,则在左侧填充零,使其达到两位长度。
  • r'~' + ...: 在处理后的十六进制字符串前加上 ~ 字符作为前缀。

最终,该列表推导式将生成一个包含每个字符十六进制表示的列表。

3、''.join(...): 使用空字符串作为连接符,将列表中的元素连接起来形成一个字符串。也就是将每个字符的十六进制表示拼接在一起。



二、理论知识2

sqlmap的tamper脚本

sqlmap的tamper中的更多脚本

序号脚本名称注释
10x2char将每个编码后的字符转换为等价表达
2apostrophemask单引号替换为Utf8字符
3apostrophenullencode替换双引号为%00%27
4appendnullbyte有效代码后添加%00
5base64encode使用base64编码
6between比较符替换为between
7bluecoat空格替换为随机空白字符,等号替换为like
8chardoubleencode双url编码
9charencode将url编码
10charunicodeencode使用unicode编码
11charunicodeescape以指定的payload反向编码未编码的字符
12commalesslimit改变limit语句的写法
13commalessmid改变mid语句的写法
14commentbeforeparentheses在括号前加内联注释
15concat2concatws替换CONCAT为CONCAT_WS
16equaltolike等号替换为like
17escapequotes双引号替换为\\\\
18greatest大于号替换为greatest
19halfversionedmorekeywords在每个关键字前加注释
20htmlencodehtml编码所有非字母和数字的字符
21ifnull2casewhenisnull改变ifnull语句的写法
22ifnull2ifisnull替换ifnull为if(isnull(A))
23informationschemacomment标示符后添加注释
24least替换大于号为least
25lowercase全部替换为小写值
26modsecurityversioned空格替换为查询版本的注释
27modsecurityzeroversioned添加完整的查询版本的注释
28multiplespaces添加多个空格
29nonrecursivereplacement替换预定义的关键字
30overlongutf8将所有字符转义为utf8
31overlongutf8more以指定的payload转换所有字符
32percentage每个字符前添加%
33plus2concat将加号替换为concat函数
34plus2fnconcat将加号替换为ODBC函数{fn CONCAT()}
35randomcase字符大小写随机替换
36randomcomments/**/分割关键字
37securesphere添加某字符串
38sp_password追加sp_password字符串
39space2comment空格替换为/**/
40space2dash空格替换为--加随机字符
41space2hash空格替换为#加随机字符
42space2morecomment空格替换为/**_**/
43space2morehash空格替换为#加随机字符及换行符
44space2mssqlblank空格替换为其他空符号
45space2mssqlhash空格替换为%23%0A
46space2mysqlblank空格替换为其他空白符号
47space2mysqldash空格替换为--%0A
48space2plus空格替换为加号
49space2randomblank空格替换为备选字符集中的随机字符
50symboliclogicalAND和OR替换为&&和||
51unionalltounionunion all select替换为union select
52unmagicquotes宽字符绕过GPC
53uppercase全部替换为大写值
54varnish添加HTTP头
55versionedkeywords用注释封装每个非函数的关键字
56versionedmorekeywords使用注释绕过
57xforwardedfor添加伪造的HTTP头

注:不同的脚本可以针对不同的数据库、不同的版本进行使用



三、实战部分

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/700344.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络安全合规-银行业数据治理架构体系搭建(二)

本次《指引》使用了许多新兴词汇,这些词汇均是首次被监管部门正式引用,并出现在银行业金融机构的监督管理文件中。我们将通过这些词汇更好地理解《指引》。 首席数据官:“首席数据官”首次作为需要监管机构任职资格许可的管理岗位被提出。通过…

Cortex-M内核知识点总结

总览 Cortex内核 基础 寄存器组 程序在经过编译后,生成可执行二进制文件,如上图,是截取某个函数在flash中存储的内容 (反汇编文件)可以看到以下信息: 指令的存储地址 ,指令的二进制内容 , 指令代表的汇编类…

MyBatis—环境配置

MyBatis 🔎MyBatis 的定义🔎MyBatis 的环境配置添加依赖链接数据库配置 MyBatis 中的 XML 路径 一些人习惯将 MyBatis 称为 iBatis MyBatis → iBatis(Plus 版) 🔎MyBatis 的定义 MyBatis 是⼀款优秀的持久层框架, 它⽀持⾃定义 SQL、存储过…

基于 FFmpeg 的跨平台视频播放器简明教程(四):像素格式与格式转换

系列文章目录 基于 FFmpeg 的跨平台视频播放器简明教程(一):FFMPEG Conan 环境集成基于 FFmpeg 的跨平台视频播放器简明教程(二):基础知识和解封装(demux)基于 FFmpeg 的跨平台视频…

5G NR:RACH随机接入过程

1. 简述 无论是3G,4G还是现在的5G都需要随机接入过程,随机接入过程主要是为了让基站和UE之间做好上行同步以及初始接入。此文章仅仅帮助大家了解此过程,更加具体的用途及其场景需要参考具体的3GPP协议(38.211,38.212,38.213).主要帮助理解如下…

Redis设计与实现笔记之链表

以下为Redis链表中一个节点的结构 typedef struct listNode {// 前置节点struct listNode *prev;// 后置节点struct listNode *next;// 节点的值void *value;} listNode; 可以看见此结构与我们常见的双向链表结构类似。由前去后继节点的地址以及当前节点的值组成。 redis中链…

使用percona xtraBackup8.x进行MySql8.0备份与还原(完全备份,增量备份,差异备份)

MySQL备份与还原 备份目标:数据的一致性,服务的可用性备份技术:物理备份(冷备份)【直接复制数据库文件,适用大型数据库,缺点是操作时服务需要停止】和 逻辑备份(热备份)【备份的是建表建库插入的SQL语句】备份方式&am…

CSDN周赛60期简要题解

一转眼,周赛都举办了60期了?还以为可以“寿终正寝”了,结果61期又安排上了。打开一看,还是《计算之魂》主题的周赛,还是这种 4 (非编程) 2 (编程) 的题型。可能目前就指…

HttpRunner 使用小结

目录 https 请求证书验证 2.0.3 (2019-02-24) 代理调试 $ 符引用 json 响应中数组的提取和断言 text/html 响应的提取和断言 testcase 之间传递参数 2.2.2 (2019-06-26) 复用 cookies 和 token 1. 每个 testcase 登录一次 2. 将 cookies 或 token 写入文件&#xff…

如何设计一个高并发系统?

其实所谓的高并发,如果你要理解这个问题呢,其实就得从高并发的根源出发,为啥会有高并 发?为啥高并发就很牛逼? 浅显一点,很简单,就是因为刚开始系统都是连接数据库的,但是要知道数据…

关于英语翻译中的归化与异化,你可以了解一下

据了解,归化和异化是翻译中使用的两种不同手段,它们都能在目的语文化中完成各自的使命,都有其存在的价值。那么,究竟什么是归化,什么是异化?英语翻译中的归化与异化有什么特征? 归化是让作者靠近…

Rust 基础入门 —— 字符、布尔、单元 类型

字符、布尔、单元 类型 字符类型(char) 对于字符类型我们有更大的自由性,概括一下: 更大的编码范围,让rust 可以展示更多的内容。统一的字节空间,字符也是四个字节的内存大小。严格区分的 "" …

reduceByKey 和 groupByKey 的分析与区别

reduceByKey 源码 def reduceByKey(partitioner: Partitioner, func: (V, V) > V): RDD[(K, V)] self.withScope {combineByKeyWithClassTag[V]((v: V) > v, func, func, partitioner)}/*** Merge the values for each key using an associative and commutative reduce…

保姆级教程:带你体验华为云测试计划CodeArts TestPlan

华为云测试计划(CodeArts TestPlan)是面向软件开发者提供的一站式云端测试平台,覆盖测试管理、接口测试,融入DevOps敏捷测试理念,帮助您高效管理测试活动,保障产品高质量交付。 登录华为云账号&#xff1a…

使用JMeter安装RabbitMQ测试插件的步骤

整体流程如下:先下载AMQP插件源码,可以通过antivy在本地编译成jar包,再将jar包导入JMeter目录下,重启JMeter生效。 Apache Ant 是一个基于 Java 的构建工具。Ant 可用于自动化构建和部署 Java 应用程序,使开发人员更轻…

【2023年江西省研究生数学建模竞赛】题目一 蒸汽发生器倒U型管内液体流动 建模方案及参考文献

代码与结果如下:完整文档见文末 完整思路”请点击这里“到原文章获取 题目: PACTEL压水堆整体测试设备在2009年建造,用于带有垂直倒U型管蒸汽发生器的压水堆热液压相关的安全性研究,参见图1。 PACTEL压水堆设施包括一个反应堆压力容器模型…

Redis如何统计一个亿的keys?

前言 不知你大规模的用过Redis吗?还是仅仅作为缓存的工具了?在Redis中使用最多的就是集合了,举个例子,如下场景: 签到系统中,一天对应一系列的用户签到记录。 电商系统中,一个商品对应一系列的…

ARM-SWI 和未定义指令异常中断处理程序的返回(七)

文章目录 处理流程示例代码实现SWI未定义指令 附录源码 处理流程 SWI 和未定义指令异常中断是由当前执行的指令自身产生的,当 SWI 和未定义指令异常中断产生时,程序计数器的 PC 的值还未更新,它指向当前指令后面第 2 条指令(对于…

Git的常见操作

Git版本控制 开发难题 在实际开发中我们会遇到一些问题,电脑蓝屏,代码丢了,懊悔不? 时间长了,文件找不到了。懊悔不?手欠,之前代码运行好好的,非要去优化下。结果还 不如以前&am…

京东天猫数据查询与分析:2023年厨电细分市场数据分析

随着消费者对生活品质的追求持续提高,我国厨房电器产品的需求也日趋多样化,市场中厨房电器的品类越来越多,我国厨房电器的市场规模也不断扩大。 根据鲸参谋电商数据显示,2023年1月至4月,天猫平台上厨房电器的销量为670…