Loading... 今天尝试了一下使用 AFL-qemu 的黑盒测试,这里简单记录一下。 首先需要安装,在目录下的 `qemu-mode` 文件夹中有构建脚本 `build_qemu_support.sh`,运行之即可安装。期间可能会出现缺少依赖的情况,缺什么安装什么即可。如果缺乏 libtool,使用 `sudo apt install libtool` 后仍然可能提示缺少,这是再执行 `sudo apt install libtool-bin` 即可。 然后在编译的过程中我还碰到了 `‘SIOCGSTAMP’ undeclared here (not in a function); did you mean ‘SIOCSRARP’?` 这样的一系列错误,这个 [issue](https://github.com/google/AFL/issues/41) 中也提到的同样的问题,并且得到了解决。我通过改写 `qemu-mode` 文件夹中的 `syscall.diff` 为 [这里](https://github.com/Mindavi/AFL/commit/6c917e3d63a2a0685d58c3518524f9615b001893) 的代码成功通过了编译。 然后就可以通过形如 `afl-fuzz -i fuzz_in -o fuzz_out -m 200 -Q binary` 的方式对 binary 就行黑盒测试了,其中 `-Q` 指定 `qemu` 模式,`-m` 指定了内存上限,默认为 200M。 我在执行该指令的时候碰到了 "unable to find the 'afl-qemu-trace' binary" 的报错,把 AFL_PATH 添加到环境变量里面就可以了,比如使用指令 `export AFL_PATH=path_of_afl` 临时添加即可。 我首先尝试了一下直接对系统程序进行 fuzzing,比如 `wget` `screen -S fuzz-wget afl-fuzz -i fuzz_in -o fuzz_out -m 200 -Q wget @@` 可以跑的起来,当然速度比较慢,也没有触发 crash。(当然像 wget 这样的程序本来也就没报能找出洞的想法) <div style="text-align:center"><img src="https://www.cjovi.icu/usr/uploads/2021/03/2466827405.png "></div> <table style="font-family: 'Trebuchet MS', 'Tahoma', 'Arial', 'Helvetica'"> 最后修改:2021 年 05 月 22 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 2 如果觉得我的文章对你有用,那听听上面我喜欢的歌吧