首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Bozz Nuster_Collectivum XXVIII

这篇文章主要讲的是在Libprotobuf-mutator与LibFuzzer联合使用的基础上,加上custom mutator功能。首先需要明确的是为什么要这么做,如果你看了上一篇【Custom Mutator Fuzz】Libprotobuf + LibFuzzer联合使用就可以发现,我们虽然构造了拥有a、b两个字段的结构,但是结构中的数据是由LibFuzzer随机突变生成的。那么假设b字段只有为”FUZZ”或”PWN”两个字符的时候才能进入下一个程序分支的情况,当然LibFuzzer也可以在代码覆盖率的加持下进入下一个程序分支,但如果你通过逆向的方式已经知道了这个关键点,难道还需要等LibFuzzer跑出这两个字符串吗?这显然十分的浪费时间和资源,所以custom mutator在某些情况下还是更加有效的

01
您找到你想要的搜索结果了吗?
是的
没有找到

【Custom Mutator Fuzz】libprotobuf-mutator安装

在之前的文章中,主要使用AFL、AFL++和libfuzzer此类fuzzer进行模糊测试实验,但此类fuzzer更多的时字符变异,例如将输入数据按字节增、删、替等操作。此类变异方式可以有效的将数据变异成意想不到的字符,但同时也会有一定的弊端,比如被测试程序要求输入数据格式、要求输入数据顺序,即结构化输入的时候依靠字节的变异可能会破坏输入数据整体的结构。最典型的例子就是在解决pwn堆溢出题的时候,首先需要通过输入”1、2、3“等选项选择对堆块的处理方式,那么”1、2、3“就需要一个int型数据输入,接着例如编辑堆块的操作,输入数据就需要一个char型数据输入。这个时候就需要使用libprotobuf与fuzzer结合共同使用,其中最典型的就是libprotobuf-mutator,它可以与引导式模糊测试引擎一起使用

03
领券