Fuzzing

这个workshop由几个challenge组成,这些challenge的目的是用AFL在开源软件里复现漏洞。漏洞主要包括下面几个,每个漏洞都有自己的特色。
为啥叫傻瓜式fuzzing呢,可能我觉得吧,一步一步从最初始的部分去探索和研究将会很好玩,不过有时候也会很难(遇到问题的时候),但是解决每一个问题都会有小小的成就感,继续激励前行,坚持下去总会有收获的,我会把我对fuzzing的探索与研究做成一系列的paper,希望大家同样觉得很好玩,have fun。
我们从没头没脑的随机生成fuzzing字符串到现在终于可以利用语法“随心所欲”的生成符合我们要求格式的字符串,但在语法方面,仍有大量的知识等着我们学习,下一篇内容仍将聚焦于语法部分,期待我们的史莱姆再次升级。
上一篇内容中我们引入了多路径探索、模式更新等内容,这次我们会引入新的思路,并且尝试特定路径上的搜索。
上篇文章中我们讲到了输入的“变异”以及选择“变异”模式的一些心得,这篇文章我们就来看看实现模式选择的一些技术细节。同时我们也要跳出单一路径的思想,让我们的fuzzing找到更多的路径。
在上篇文章中我们实现了最简单的Fuzzing工具,这次我们就在之前的基础上,实现第一次“升级”,同时也给大家分享一些我个人的经验,让大家能够定制自己的fuzzing工具。
强网杯以来就一直很想系统性的学习fuzzing技术,fuzzingbook可以说是fuzzing技术学习的圣经,但因为它全英文编写,且长度感人,因而很多人都望而止步。我将自己的学习经验分享给大家,希望能帮助大家更好的学习fuzzing技术。
最近啃了FuzzingBook,然后记录一个关于入坑fuzzing的学习历程。
fuzzing二进制目前有很多流派,但都大同小异,目的都是以最快的速度产生样本覆盖更多的code path,显然在这个过程中以code coverage作为整个fuzzer的驱动导向是最科学的,也就是覆盖率引导的灰盒模糊测试技术CGF(Coverage-based Greybox Fuzzing),这里有必要对这个最为核心的技术背景做些介绍。
这是“从零开始学习fuzzing”的第三篇文章,我们会继续fuzzing的菜鸟学习之路,从代码覆盖(code coverage)的角度对我们之前编写的模糊测试器进行探讨,并说明其重要性。