AFL的安装与测试
1.AFL的安装
先安装gcc,我的虚拟机还没装。
//先安装gcc |
之后发现还需要clang和llvm,要啥装啥吧。
sudo apt-get install clang |
下载AFL,开始愉快地安装,很快啊。
git clone https://github.com/google/AFL |
2.AFL测试
我根据网上的教程,直接输入afl -fuzz 显示找不到afl命令,那就直接测试一个具体的文件试试。
创建一个testfile文件夹,然后在该文件夹下创建测试文件afl_test.c,内容如下:
|
敲命令
afl-gcc -g -o afl_test test.c |
显示如下

于是我又试了命令apt install afl
重新尝试,

接着建立fuzz_in文件夹,创建输入文件testcase,输入文件中写几个简单单词,fuzzing时会产生简单变异。
mkdir fuzz_in |
进行fuzz,结果如图。
afl-fuzz -i fuzz_in -o output ./afl_test |

3.基于编译器的目标程序插桩
3.1下载目标程序集(coreutils-9.1.tar.gz)
wget https://ftp.gnu.org/gnu/coreutils/coreutils-9.1.tar.gz |
3.2使用afl-gcc,生成coreutils的每个二进制程序
-
查看 coreutils 的 configure 选项,指定
cc=afl-gcc。./configure CC=afl-gcc
这一步用来生成Makefile,为了下一步编译做准备,可以通过在configure后面加参数进行控制。
可以通过
./configure --help查看帮助问题

通过百度找到解决方案
export FORCE_UNSAFE_CONFIGURE=1
-
生成 coreutils 二进制程序集。make 出来的每一个插桩后二进制均在 coreutils-9.1/src 目录下
make
3.3为 coreutils 的特定程序确定输入种子
coreutils 包含很多二进制程序,任选其中程序进行 fuzzing。
构造输入种子列表,存放于coreutils-9.1/src/input 目录下,构造方法可以选择:
-
学习 coreutils 文档中这 3 个程序的命令行选项,用这些命令行选项构建
-
直接用随机构造的任意字符串作为输入种子。
mkdir input
mkdir output
cp ../../AFL/dictionaries/* ./input # 将字典拷贝到input目录下
3.4在coreutils-9.1/src 目录下,使用 afl-fuzz -i input -o output ./[程序名] @@进行fuzzing,一段时间后终止fuzzing 并在 coreutils-9.1/src/output 目录下查看测试结果。

评论



