libFuzzer漏洞挖掘总结教程
本篇文章简述libFuzzer原理,配合各个实例介绍参数功能意义,为最终进一步的完全利用奠定基础。
模糊测试是一种在大型软件系统中查找错误的有效方式,LibFuzzer是一个in-process、coverage-guided、evolutionary的fuzz引擎,与被测库链接在一起。LibFuzzer的优势在于可以主动引导fuzz过程,针对函数/协议级别的fuzz非常有效率。编写基于libfuzzer的fuzzer很容易,只需实现一个fuzz target作为被测对象的接口。编译链接时使用-fsanitize=fuzzer选项启用libFuzzer,并提供代码覆盖率信息。运行fuzzer时可以设置各种选项参数,如种子语料库、最大长度、超时等。通过不断生成测试样例并触发更多的代码逻辑,最终实现模糊测试。