4

我有一个二进制文件,我一直在尝试用 AFL 进行模糊测试,唯一的事情是 AFL 只模糊 STDIN 和文件输入,这个二进制文件通过它的 arguments 接受输入pass_read [input1] [input2]。我想知道是否有任何方法/模糊器允许以这种方式进行模糊测试?

我没有源代码,所以制作线束并不适用。

4

3 回答 3

2

AFL 的创始人 Michal Zalewski 在这篇文章中说:

AFL 不支持 argv 模糊测试,因为 TBH,它在实践中并不是非常有用。在experimental/argv_fuzzing/中有一个例子展示了如果你真的想在一般情况下如何做。

链接到 GitHub 上提到的示例:https ://github.com/google/AFL/tree/master/experimental/argv_fuzzing

文件argv-fuzz-inl.h中有一些说明(我自己没试过)。

于 2020-09-23T11:40:46.747 回答
0

我查看了AFLplusplusGitHub 上的存储库。里面AFLplusplus/utils/argv_fuzzing/,有一个Makefile。如果你运行它,你会得到一个.so文件(一个共享库),你可以用它来做argv模糊测试,即使你只有二进制文件。显然,您必须使用AFL_PRELOAD. 您可以在 中阅读更多内容README

于 2021-11-29T11:43:15.717 回答
0

仅限 Bash 解决方案

例如,让我们生成 10 个随机字符串并将它们存储在一个文件中

cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 10 | head -n 10 > string-file.txt

接下来,让我们从字符串文件中读取 2 行并将其传递给我们的应用程序

exec handle< string-file.txt

while read string1 <&handle ; do
        read string2 <&handle

        pass_read $line1 $line2 >> crash_file.txt
done

exec handle<&-

然后,我们将任何崩溃存储在其中crash_file.txt以供进一步分析。

这可能不是最优雅的解决方案,但如果没有工具必须满足当前要求,也许您会给您一些其他可能性的想法

于 2020-07-25T17:06:06.890 回答