今天还是我这个直男来给大家发文章,别怪我太简单=+=
我就是喜欢简单的写一下,今天给大家简单介绍一下绕过注入过滤的各种姿势,是观音坐莲还是老汉推车?
直奔主题,我们从基础的到复杂一丢丢的。
注:本篇文章是基于sql-labs靶场来实验,没有的可以参考上篇文章安装方式和资源都在里面。本篇文章适合有一点基础的朋友,没有基础可以提前了解也不影响,我做了一些简单的原理说明。
1、首先是通过大小写来绕过,原理就是过滤机制不严格,只过滤了小写的字符,没有过滤大写的字符。
我们构造语句可以大小写混写如:And、sELEcT这种类型
这种类型的构造即可简单绕过一些的过滤。
2、绕过注释
某些地方会对最后的--+这个注释符号进行过滤,我们应该怎么绕过
这个时候我们可以进行提前闭合一下语句,在3的前面加上单引号即可(语句的意思这里我就不讲解了,因为涉及到一些手工注入的基础,说太多就偏题了。)
这样就可以成功拿到数据库库名了。
3、双写绕过
双写绕过的原理就是过滤机制会过滤掉你的语句,但是只执行了一次
列如:anandd这个and过滤机制过滤掉之后,那么又会有一个新的and重组,这个时候新的and就会生效了
4、关键字等价绕过
这个取决于and和or的过滤,语句中&&代表and,||代表or可以等同使用.
同理需要使用and的地方也可以替换掉同样生效
5、绕过去空格过滤
绕过空格其实也就是将空格转变成编码模式,也就是%a0
6、MySQL宽字符绕过
原理是利用gbk的编码模式,两个字节代表一个汉字,针对被转义,我们可以构造一个字符,让其和转义字符一同被合并掉,可能理解起来比较困难,我们简单理解一下,就是需要转义我们的单引号闭合,就需要在我们的单引号前面加上url编码的,但是一半MySQL数据库使用的是gbk编码,我们就可以在带入单引号同时带入另一个字符,这样gbk编码会将其解码为一个汉字,就成功让我们的单引号不被过滤了。
可以看到我们带入进去的字符会和转义符号合并被认为是一个汉字从而让我们的后面语句顺利执行。
7、base64编码绕过(此注入基于cookie注入)
有的cookie会使用base64编码加密,我们需要对测试符号语句也进行一下base64的编码处理才能成功。
首先我们抓包到cookie
然后我们将admin编码
发送过去
可以明确看到是双引号闭合方式,我们下一步就可以构造语句,这里可以使用报错注入语句。
admin" and updatexml(1,concat(0x7e,database(),0x7e),1) or "1"="1
转化为base64
YWRtaW4iIGFuZCB1cGRhdGV4bWwoMSxjb25jYXQoMHg3ZSxkYXRhYmFzZSgpLDB4N2UpLDEpIG9yICIxIj0iMQ==
然后我们将语句插入进去
成功爆出数据库名。
原文始发于微信公众号(白安全组):绕过SQL注入过滤,你喜欢老汉推车还是观音坐莲?
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论