AFL安装和初步使用
0. 前言
AFL是由一位大神开发的,早已不再维护。所以官网下载的最新版也是多年前的,但不妨碍该工具的强大。
1. 下载
官网:https://lcamtuf.coredump.cx/afl/
下载后得到 afl-latest.tgz
压缩包。
2. 安装
将下载后的压缩包解压到任意目录,进入目录后,输入:
make
sudo make install
进行编译安装。
其命令都默认安装在了 /usr/local/bin
目录下,终端可以直接输入调用。
故:终端打开输入afl-后按Tab健能有显示说明安装成功。
3. 初步使用
1)准备文件
找到任意一个目录作为项目目录,在项目目录下:
新建 afl_test.c
测试文件,代码如下:
#include <stdio.h>
int main(int argc, char *argv[])
{
char buf[100]={0};
gets(buf); // 存在栈溢出漏洞
printf(buf); // 存在格式化字符串漏洞
return 0;
}
新建 fuzz_in
目录和 fuzz_out
目录,其中 fuzz_in
目录内新建文件 testcase
作为输入种子,testcase
里面暂时先随便写点啥都行,如aaa
。
最终效果是这样子的:
2)插桩编译C生成二进制
在项目目录下,执行:
afl-gcc -g -o afl_test afl_test.c
将C文件 afl_test.c
编译成了二进制文件 afl_test
。
编译过程如下(说明该程序的确存在漏洞):
新的目录结构如下:
3)开始Fuzz
(1)正常执行
afl-fuzz -i fuzz_in -o fuzz_out ./afl_test
(2)可能出现的问题
问题1:
解决办法:
sudo echo core >/proc/sys/kernel/core_pattern
# 然后再执行
afl-fuzz -i fuzz_in -o fuzz_out ./afl_test
问题2:自身电脑CPU频率问题
解决办法:
按照提示,终端输入:
# 必须切换到该目录才生效
cd /sys/devices/system/cpu/
echo performance | tee cpu*/cpufreq/scaling_governor # 将cpu设置成最高性能模式
# 记得cd回来
cd - # 即:cd /xxx/刚才的项目目录下/
afl-fuzz -i fuzz_in -o fuzz_out ./afl_test
(3)正常结果
成功!
此时目录结构如下: