Fuzz脚本的编写
目录
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软件出错
2phpstudy2016下载
http://mydown.yesky.com/pcsoft/467336.html
3安装
第一,二步,要系统服务某狗才能识别网站
第三步,去github上下个sqli-labs当靶机源码
第一步,把ip黑名单关了
第二步,把各种资源防护关了,只留http防护
4简单验证环境
url?id= 1’ and 1=1 --+ 触发 某狗的and语句条件预警,被拦截
2.我们看下能不能用requests进行访问请求,看返回包里存在”网站防火墙字样”说明是成功的(这是我们进行判断语句是否绕过waf的基础)
提醒一下,可能是因为访问请求过大,作者中途发现requests请求不到内容,重启虚拟机就好了,所以专门提出来
4. fuzz脚本编写
1如何编写
这里,利用网上的流传甚广的内联(作者也只会这个)
fuzz出,意思就是绕过正则匹配
这里作者只进行两个语句的fuzz
其中url="http://192.168.37.132/sqli-labs-master/Less-1/?id=1"
当然还有bool 时间 等等注入的fuzz,字典字符的顺序和字符在语句中位置很重要,很重要,很重要(重要事情说三遍)
2附上脚本
3优化脚本
还是提出来,供大家学习学习
无外乎是多线程跑起来,但是怎样利用多线程,这里作者前前后后用了多种(不限于这个脚本,是作者学习python语言道路上遇到的)
1)threadpool 老式的,效果还可以
2)multiprocessing和multithreading
3)自己的线程池类
垃圾效果。。。
4)concurrent.futures
也就是本代码用到的
参考:https://www.cnblogs.com/zhang293/p/7954353.html
4效果结果
这里下图可以清楚看到,我们进行Fuzz的字符集合,时间原因作者设置的字符个数比较少,毕竟是进行阶乘,字符每增加一个,都懂得
以及三排时间,作者是每跑完20w,就打印一遍时间,可以看到,时间还是耗费还是比较少的,1分钟就跑完20w了
你没有看错,142w,跑完这些集合没有一个能行
5这里说几处改点
如果要修改,注意这几处
1)作者测试67 8 9绕过概率要大,玄学
2)for循环的次数和语句位置,更重要的是图中那个ThreadPoolExecutor(20),作者开了虚拟机和杂七杂八的东西,本身电脑8g内存,开了20,刚好合适(运气吧,写这篇文章,刚好代码完全跑过,开大了只跑到90w就内存报错了,也有好处,开到ThreadPoolExecutor(100),4分钟就跑到90w了),自己结合实际情况考虑
3)语句的修改很看技术和修为的,作者也是小白,在探讨
4)判断条件
能行的判断条件,作者有点怀疑自己哪个语句或者条件错了
4. 嵌入到sqlmap的tamper脚本
sqlmap神器已经写好了各种条件,添加tamper脚本,只需简单写个替换条件就行了
可参考:https://blog.csdn.net/whatday/article/details/62059263
tamper有三个部分
第一部分:
执行脚本的优先级
第二部分
版本,或者是适用条件
第三部分
我们关注的点,作者看了下,简单点就行替换,把unionselect替换成什么就行了
只需改动这,其余部分相当于是公共部分。无成果,有兴趣可以自己研究下
5. 总结
本身fuzz其实不难(难在语句的构造和位置,这是技术问题了),剩下的就剩暴力破解问题了。作者花费时间最多的是在环境搭建和脚本的运行,这两个点上,文中作者以自己遇到的坑点已经提出来了
本文仅用于普及网络安全知识,提高小伙伴的安全意识的同时介绍常见漏洞的特征等,若读者因此做出危害网络安全的行为后果自负,与合天智汇以及原作者无关,特此声明。本文为原创文章,转载请注明出处!