利用afl进行二进制漏洞挖掘
安装解压:
1 | sudo apt-get install afl |
我们选择写个有栈溢出漏洞的程序
.来fuzz代码如下:
vim test.c
1 | #include"stdio.h" |
1 | afl-gcc test.c -o test |
先打开错误转储机制
echo core >/proc/sys/kernel/core_pattern
然后我们就可以用官方的测试用例进行fuzz
1 | mkdir fuzz_out |
成功跑出一个crash,查看文件
是因为文件中的hello字符被语料库变异成TelTTTTTTTTTTTTTTTTTTTT,TTT的字符串过长导致栈溢出崩溃
① Process timing:Fuzzer运行时长、以及距离最近发现的路径、崩溃和挂起经过了多长时间。
② Overall results:Fuzzer当前状态的概述。
③ Cycle progress:我们输入队列的距离。
④ Map coverage:目标二进制文件中的插桩代码所观察到覆盖范围的细节。
⑤ Stage progress:Fuzzer现在正在执行的文件变异策略、执行次数和执行速度。
⑥ Findings in depth:有关我们找到的执行路径,异常和挂起数量的信息。
⑦ Fuzzing strategy yields:关于突变策略产生的最新行为和结果的详细信息。
⑧ Path geometry:有关Fuzzer找到的执行路径的信息。
⑨ CPU load:CPU利用率
最后就可以用GDB调试崩溃的程序啦。