实验?3?基于?AFL?的模糊测试
3.1?实验名称
《基于?AFL?的模糊测试》
3.2?实验目
1?、熟悉模糊测试方法
2?、熟悉模糊测试工具?AFL?的使用
3.3?实验步骤及内容
1?、?安装?AFL
2?、?任意选择一个有源代码的样本
这里采用教材上一个包含栈溢出漏洞的样本。
3?、?结合源代码分析用?AFL?进行模糊测试后的结果,将主要步骤和分析结果记录到实验报告中,可截图说明。
首先是用?afl-gcc?编译并插桩。
接着是用?afl-fuzz?进行模糊测试。
在?cycles?done?变成绿色之后可以停止。可以看到检测出了两条路径和一个?crash
crashes?存储了导致崩溃或异常的测试用例,queue?存储了不同路径的测试用例,plot_data?是对测试结果的可视化。
进入?crashes??目录,使用xxd?可以看到导致崩溃的测试用例。显然这里是因为数组越界导致的溢出。
3.4?实验关键过程及其分析
在使用?afl?模糊测试时,crashes??目录会记录导致崩溃的输入。如果积累的?crashes 足够多,结果中会包含大多数可能出现的漏洞类型,比如数组溢出、格式化字符串漏洞等。这些结果对分析程序的安全性有很大的参考价值。