问题标签 [afl-fuzz]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2614 浏览

fuzzing - 达到超时时如何使afl-fuzz不跳过测试用例

我目前正在尝试使用 AFL fuzzer (American Fuzzy Lop) 对 PDF 查看器进行模糊测试。

我的问题很简单,afl-fuzz希望应用程序在处理后接受输入并关闭。但是,PDF 查看器旨在打开文档并保持打开状态直到关闭。结果是afl-fuzz所有初始输入都达到超时并决定在这里停止。

我想知道如何告诉 AFL 考虑达到超时并终止程序是测试用例的“正常”行为。

0 投票
1 回答
359 浏览

ssl - 尝试使用 OpenSSL 1.0.1f 使用 AFL-FUZZ 重新创建 Heatbleed

我在这里试图在之前的 openssl 版本上重新创建 Heartbleed 错误1.0.1g,所以我选择了openssl 1.0.1f。我安装了 AFL-FUZZ,然后是 openssl。在这个这个链接的帮助下,我想我已经安装了 openssl 但最终它给了我一个奇怪的错误

我运行了openssl version命令,它成功运行并给了我输出OpenSSL 1.0.1f 6 Jan 2014,所以我认为它已正确安装(不确定如何处理错误)。

现在下一步是简单地找到一个使用 openssl 的代码,我在这里找到了 handshake.c 文件。但是它没有编译成功。afl-gcc handshake.c libssl.a libcrypto.a -o handshake -I ssl/include -ldl错误是

请建议我如何解决这些错误。

提前致谢。

编辑:

所以到目前为止我所做的是使用 root 权限安装 openssl。我工作但给了我很多关于手动安装的错误,即大多数错误看起来像item= expecting something other than a integer。我手动将这些行更改为字符,=item 1 -> =item '1'. 在更改了根目录的apps和ssl文件夹之后,我终于让它工作了。最终安装看起来像在 make 和 make install 之后

现在我认为安装没有错误,但我还没有安装 openssl,因为它说还没有安装这样的包。

请帮忙。

0 投票
1 回答
104 浏览

build - 使用 make 构建后 GNU coreutils 二进制文件在哪里?

我想用AFL在GNU coreutils上练习模糊测试。我的计划是使用 afl-gcc 编译 coreutils 二进制文件,以便能够在它们上运行 AFL。

通过运行,我已经能够使用 AFL 的编译器成功编译 coreutils./configure CC="afl-gcc" CXX="afl-g++" --disable-shared; make

但是,我不明白编译后运行的二进制文件make位于何处。

0 投票
1 回答
181 浏览

arm - 使用带有 -L 参数的 QEMU 用户模式从 IoT 固件运行 ARM 二进制文件时出现问题

我试图运行一个 ARM 二进制文件——httpd它来自 Ubuntu18.04 上的网络摄像头固件。我的电脑是基于 X64_86 的,所以我决定使用 QEMU 虚拟机来运行它。据我所知,QEMU 提供了两种不同的仿真模式,分别是System ModeUser Mode. 首先,我尝试了系统模式,二进制可以成功运行。这样做,我可以保证二进制文件很好。

然后我尝试使用User Mode更简洁和快速的。二进制文件是动态链接的,因此相关博客仍然建议了两种方法。第一个解决方案是将qemu-arm二进制文件和依赖的动态链接库文件复制到固件的根路径 -squashfs-root然后使用chroot类似chroot ./qemu-arm ./usr/sbin/httpd. 结果也很好。

最后,我尝试使用qemu-armwith-L参数来暗示依赖的动态链接库文件的前缀。但是这次不行,也没有报错,几分钟后就被杀掉了。我也尝试过export LD_LIBRARY_PATH = .并没有解决。我可以提供的一些信息如下。

我应该提到的另一个信息是我没有二进制文件的源代码。我尝试使用-g参数调试二进制文件,gdb-multiarch但我得到了如下所示的情况。

qemu-arm-static+的方式chroot可以正常工作,已经过测试。我之所以如此顽固地使用 QEMU 用户模式,-L是因为这项工作的最终目标是httpd使用afl-qemu. 二进制文件应该能够在 QEMU 用户模式下运行是一个先决条件。除了依赖的动态链接库文件之外,我必须遗漏一些东西。任何人都可以帮助我,甚至只是给我一些想法吗?非常感谢!!!

添加:

0 投票
1 回答
249 浏览

fuzzing - 使用 AFL++ 进行二进制模糊测试

我想用 afl++ / binary fuzzing 做一些实验。我安装它并运行 build_qemu_support.sh,但如果我尝试对二进制文件进行模糊测试,仍然会出现错误消息。

命令:

输出:

怎么了?

0 投票
1 回答
128 浏览

c - AFL-fuzz 没有发现任何崩溃

我是第一次尝试 AFL,因此我发现了一个非常简单的易受攻击的 C 代码,我可以用它来测试 AFL。

问题中的C代码是

我通过运行编译该代码afl-gcc test.c -o test并对其进行了测试,以确保它在假设的情况下崩溃(运行./test $(python3 -c "print('A'*26)")将按预期给出分段错误)

这里的问题是,我创建了一个测试用例echo -en "test\x00" > input/testcase并运行 AFL afl-fuzz -i afl_in -o afl_out -- ./test,但一天后它仍然没有发现任何崩溃。

我还尝试创建一个会强制它崩溃的测试用例,python3 -c "print('A'*26)" > input/testcase但它仍然运行并且没有找到任何东西。

这被认为是最简单的例子,所以我可以更好地了解 AFL,但事实证明这是一个挑战。任何人都可以帮忙吗?