安装和配置
git clone https://github.com/mirrorer/afl
然后进入你刚才下载的AFL的位置
make; sudo make install
就下载好了
然后需要有gcc
sudo apt install gcc
make; sudo make install
然后再
afl-fuzz
就差不多可以进行下面的实例了
实例
自己写一个 .c文件
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <signal.h>
int vuln(char *str)
{
int len = strlen(str);
if(str[0] == 'A' && len == 66)
{
raise(SIGSEGV);
//如果输入的字符串的首字符为A并且长度为66,则异常退出
}
else if(str[0] == 'F' && len == 6)
{
raise(SIGSEGV);
//如果输入的字符串的首字符为F并且长度为6,则异常退出
}
else
{
printf("it is good!\n");
}
return 0;
}
int main(int argc, char *argv[])
{
char buf[100]={0};
gets(buf);//存在栈溢出漏洞
printf(buf);//存在格式化字符串漏洞
vuln(buf);
return 0;
}
gcc编译
afl-gcc -g -o afl_test afl_test.c
有漏洞
注意这里是错的: 新建fuzz_in,fuzz_out 在输入文件中写点东西
输入
afl-fuzz -i fuzz_in -o fuzz_out ./afl_test
报错
然后
sudo su
echo core >/proc/sys/kernel/core_pattern
afl-fuzz -i fuzz_in -o fuzz_out ./afl_test
再报错
解决:
说我上边的out不是directory
也就是说的fuzz_in_out需要是文件夹
然后out不用自己创建,上班那条指令之后自动生成。
之后重新执行这条指令
afl-fuzz -i fuzz_in -o fuzz_out ./afl_test
就可以跑了。自己不停。想停了就Ctrl+C
另:创建文件:
touch <filename>
创建文件夹:
mkdir <foldername>
不过在这用不到
10/26
实例使用
在llvm_mode中make