afl入门(一)
转载 原文地址 https://blog.csdn.net/yalecaltech/article/details/88752848
原文地址
本次测试程序test.c
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char **argv){
char ptr[20];
if(argc>1){
FILE *fp=fopen(argv[1],"r");
fgets(ptr,sizeof(ptr),fp);
}
else{
fgets(ptr,sizeof(ptr),stdin);
}
printf("%s",ptr);
if(ptr[0]=='d'){
if(ptr[1]=='e'){
if(ptr[2]=='a')
{
if(ptr[3]=='d')
{
if(ptr[4]=='b')
{
if(ptr[5]=='e')
{
if(ptr[6]=='e')
{
if(ptr[7]=='f')
{
abort();
}
}
}
}
}
}
}
}
return 0;
}
利用afl-gcc命令编译程序生成test文件
生成fuzz_in和fuzz_out两个文件夹
进入fuzz_in文件夹创建一个test文件用于测试(subl命令需要安装sublime)
我们先试试deadbeef
开始fuzz
可以看到直接就crash了
我们把test中改成和deadbeef相近的内容
再次fuzz
进入 fuzz_out/crashes文件使用cat指令查看crash
可以看到引起crash的是deadbeef