如何将 afl-fuzz(美国模糊 Lop)与 openssl 一起使用

如何将 afl-fuzz(美国模糊 Lop)与 openssl 一起使用

我正在尝试在 Ubuntu 中将 afl-fuzz 与 openssl 一起使用。 afl-fuzz 的正常用法是:

afl-gcc test.c //-- this will produce a.out

mkdir testcases
echo "Test case here." > testcases/case1

afl-fuzz -i testcases -o findings ./a.out

现在对于 openssl 来说,它会是这样的:

afl-gcc ./config
make //-- not sure of this :)
afl-fuzz -i test -o findings <exe_name>

其中“test”是包含 openssl 测试用例的文件夹

我的问题是 openssl 的“exe_name”参数是什么?如果我对其余代码的理解有误,请纠正我。谢谢

答案1

我完全确定“openssl 的“exe_name”参数”是什么意思,但是:

afl-fuzz -i test -o findings ~/path/to/binary/to/fuzz @@

将对 处的二进制文件进行模糊测试~/path/to/binary/to/fuzz,并替换@@为从 中的种子文件生成的变异测试用例的路径test

答案2

您不能按原样使用 openssl 二进制文件。您需要编写一个单独的程序,该程序将使用 openssl 库,然后使用 afl-fuzz 对其 exe 进行模糊测试。

整个过程就是这样

下载openssl

1. ./config // If you disable something here like no-comp then you have to run`make depend`.
2. Replace gcc with afl-gcc in Makefile 
3. make && make install

此过程将使用 afl-gcc 编译 openssl,您可以查看如何将检测添加到目标文件中。最后你会得到openssl 目录中的文件libssl.alibcrypto.a

成功编译 openssl 后,在示例应用程序(例如 example.c)中使用它,然后编译此文件

4. afl-gcc sample.c -o sample libssl.a libcrypto.a -ldl

然后最后执行模糊测试 5. afl-fuzz -i testcases -o discovery -m none -- ./sample

你可以看看获得一些想法,甚至找到示例文件。

相关内容