问题标签 [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.
fuzzing - 达到超时时如何使afl-fuzz不跳过测试用例
我目前正在尝试使用 AFL fuzzer (American Fuzzy Lop) 对 PDF 查看器进行模糊测试。
我的问题很简单,afl-fuzz
希望应用程序在处理后接受输入并关闭。但是,PDF 查看器旨在打开文档并保持打开状态直到关闭。结果是afl-fuzz
所有初始输入都达到超时并决定在这里停止。
我想知道如何告诉 AFL 考虑达到超时并终止程序是测试用例的“正常”行为。
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,因为它说还没有安装这样的包。
请帮忙。
build - 使用 make 构建后 GNU coreutils 二进制文件在哪里?
我想用AFL在GNU coreutils上练习模糊测试。我的计划是使用 afl-gcc 编译 coreutils 二进制文件,以便能够在它们上运行 AFL。
通过运行,我已经能够使用 AFL 的编译器成功编译 coreutils./configure CC="afl-gcc" CXX="afl-g++" --disable-shared; make
但是,我不明白编译后运行的二进制文件make
位于何处。
arm - 使用带有 -L 参数的 QEMU 用户模式从 IoT 固件运行 ARM 二进制文件时出现问题
我试图运行一个 ARM 二进制文件——httpd
它来自 Ubuntu18.04 上的网络摄像头固件。我的电脑是基于 X64_86 的,所以我决定使用 QEMU 虚拟机来运行它。据我所知,QEMU 提供了两种不同的仿真模式,分别是System Mode
和User Mode
. 首先,我尝试了系统模式,二进制可以成功运行。这样做,我可以保证二进制文件很好。
然后我尝试使用User Mode
更简洁和快速的。二进制文件是动态链接的,因此相关博客仍然建议了两种方法。第一个解决方案是将qemu-arm
二进制文件和依赖的动态链接库文件复制到固件的根路径 -squashfs-root
然后使用chroot
类似chroot ./qemu-arm ./usr/sbin/httpd
. 结果也很好。
最后,我尝试使用qemu-arm
with-L
参数来暗示依赖的动态链接库文件的前缀。但是这次不行,也没有报错,几分钟后就被杀掉了。我也尝试过export LD_LIBRARY_PATH = .
并没有解决。我可以提供的一些信息如下。
我应该提到的另一个信息是我没有二进制文件的源代码。我尝试使用-g
参数调试二进制文件,gdb-multiarch
但我得到了如下所示的情况。
qemu-arm-static
+的方式chroot
可以正常工作,已经过测试。我之所以如此顽固地使用 QEMU 用户模式,-L
是因为这项工作的最终目标是httpd
使用afl-qemu
. 二进制文件应该能够在 QEMU 用户模式下运行是一个先决条件。除了依赖的动态链接库文件之外,我必须遗漏一些东西。任何人都可以帮助我,甚至只是给我一些想法吗?非常感谢!!!
添加:
fuzzing - 使用 AFL++ 进行二进制模糊测试
我想用 afl++ / binary fuzzing 做一些实验。我安装它并运行 build_qemu_support.sh,但如果我尝试对二进制文件进行模糊测试,仍然会出现错误消息。
命令:
输出:
怎么了?
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,但事实证明这是一个挑战。任何人都可以帮忙吗?