模糊测试作为一种软件测试技术,通过构建随机输入数据,以期发现目标程序的潜在问题,已经得到了广泛的应用。然而,一个好的模糊测试方案还需要有高效的工具支持,而AFL++则是当前最为流行的模糊测试工具之一。本文将为大家介绍如何使用AFL++进行模糊测试方案。

第一步,安装AFL++

AFL++的安装相对简单,官方提供了详细的安装指南,您可以根据自己的操作系统版本选择对应的安装步骤。需要注意的是,如果您使用的是Linux系统,需要先安装GCC和Clang等相关工具。

第二步,编译目标程序

在进行模糊测试之前,需要先编译目标程序,并生成相应的可执行文件以及符号表(用于后续的ASAN验证)。在编译时,建议开启ASAN和其他调试选项,以增加程序稳定性和调试信息。例如:

“`

$ CC=’afl-clang-fast’ CXX=’afl-clang-fast++’ \

./configure –with-sanitizers=address,undefined \

–disable-shared –enable-static && \

make clean all test

“`

注:上述命令中,`CC=’afl-clang-fast’`和`CXX=’afl-clang-fast++’`是指定编译器(使用AFL++提供的Clang)。`–with-sanitizers=address,undefined`开启ASAN和UBSAN,`–disable-shared`和`–enable-static`则是禁用共享库并启用静态库。

第三步,创建输入样本集合

在进行模糊测试时,需要准备一组输入样本,作为随机测试数据的种子。这些样本可以来自于实际的使用场景,也可以是一些随机生成的数据。为了能够更好地覆盖程序可能的输入空间,建议样本集合的大小要充分。

第四步,运行AFL++

在准备好以上工作之后,即可开始运行AFL++进行模糊测试。以下是一个示例命令:

“`

$ AFL_USE_ASAN=1 afl-fuzz -i inputs/ -o results/ -t 10000 \

— /path/to/target/binary -f @@

“`

注:上述命令中,`AFL_USE_ASAN=1`开启ASAN验证,`-i inputs/`指定输入样本目录,`-o results/`指定输出目录,`-t 10000`指定超时时间为10秒。`–`后的`/path/to/target/binary`是目标程序的可执行文件路径,`-f @@`表示将AFL++的随机输入数据传递给目标程序。

第五步,测试结果分析

模糊测试运行完毕后,可以在输出目录中查看测试结果,包括crashes和hangs等类型的问题。通过分析这些问题,可以确定目标程序中的潜在问题,并及时修复。

综上所述,使用AFL++进行模糊测试方案是一种高效的软件测试方法,可大大提高软件的稳定性和安全性。如果您还没有尝试过模糊测试,不妨在下一个项目中尝试一下。

详情参考

了解更多有趣的事情:https://blog.ds3783.com/