#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Image
{
char header[4];
int width;
int height;
char data[10];
};
void stack_operation(){
char buff[0x1000];
while(1)
stack_operation(); //recusively call function and allocate stack memory
}
int ProcessImage(char* filename){
FILE *fp;
char ch;
struct Image img;
fp = fopen(filename,"r"); //Statement 1
if(fp == NULL)
{
printf("\nCan't open file or file doesn't exist.\r\n");
exit(0);
}
while(fread(&img,sizeof(img),1,fp)>0)
{
//if(strcmp(img.header,"IMG")==0)
//{
printf("\n\tHeader\twidth\theight\tdata\t\r\n");
printf("\n\t%s\t%d\t%d\t%s\r\n",img.header,img.width,img.height,img.data);
//integer overflow 0x7FFFFFFF+1=0
//0x7FFFFFFF+2 = 1
//will cause very large/small memory allocation.
int size1 = img.width + img.height;
char *buff1;
if(size1/2==0){
do{
buff1=(char*)malloc(size1);
}while(buff1);
}
else{
stack_operation();
}
}
return 0;
}
int main(int argc,char **argv)
{
ProcessImage(argv[1]);
return 0;
}
此C程序包含上述所有漏洞的易受攻击的代码,然后用户可以使用AFL或hongfuzz或其他所需的方法对其进行模糊处理。
**如何编译**
只需在命令提示符下键入“ make”即可。Makefile包含在其中。
如何为AFL生成输入?
只需创建一个示例输入文件,如下所示,其余的AFL会小心处理:
echo "IMG" >input/1.tx
AFL将自动生成新的测试用例,并发现上述大多数漏洞。多数民众赞成在AFL的美丽:)
如何使用AFL对其进行模糊处理?
1.首先使用以下命令编译该程序:
afl-gcc -g -fsanitize=address imgRead.c -o imgread
2.运行以下命令:
afl-fuzz -i input -o output -m none -- ./imgRead @@
如何使用honggfuzz对其进行模糊处理
1.首先使用以下命令编译该程序:
hfuzz-gcc -g -fsanitize=address imgRead.c -o imgread
2.运行以下命令:
hongfuzz -i input -- ./imgread ___FILE___
如何使用libfuzzer进行模糊测试
您需要修改C代码,可以从这里获取更新的代码:https : //github.com/hardik05/Damn_Vulnerable_C_Program/blob/master/imgRead_libfuzzer.c
1.使用以下命令编译程序:
clang -fsanitize=fuzzer,address,undefined -g imgRead_libfuzzer.c -o imgRead_libfuzzer
** 2。运行以下命令进行模糊测试:
./imgRead_libfuzzer
您可以在此处查看视频教程:
完整的模糊测试播放列表:
https://www.youtube.com/watch?v=r7ucv2kN4j4&list=PLHGgqcJIME5kYhOSdJjvtVS4b4_OXDqM-
以下单个视频:
Linux
AFL ++
[使用AFLplusplus进行模糊处理]安装AFLPlusplus并使用简单的C程序进行模糊处理
https://www.youtube.com/watch?v=9wRVo0kYSlc
[使用AFLplusplus进行模糊处理]如何在Linux上以持久模式对没有源代码的二进制文件进行模糊处理
https://www.youtube.com/watch?v=LGPJdEO02p4
AFL
[使用AFL进行模糊处理]如何在Ubuntu上安装AFL
https://www.youtube.com/watch?v=r7ucv2kN4j4
[使用AFL模糊处理]使用AFL模糊简单的C程序
https://www.youtube.com/watch?v=NiGC1jxFx78&t=66s
[使用AFL进行模糊处理]使用AFL查找不同类型的漏洞
https://www.youtube.com/watch?v=m1RkShHzx_8&t=151s
[使用AFL进行模糊处理]使用崩溃行走对崩溃进行分类,并使用GDB查找根本原因
https://www.youtube.com/watch?v=5R2gPkCXZkM
[使用AFL进行模糊处理]在Qemu模式下,使用AFL对没有源代码的二进制文件进行模糊处理。
https://www.youtube.com/watch?v=np3sLLFQs6I
Honggfuzz
[使用honggfuzz进行模糊处理]使用HongFuzz
https://www.youtube.com/watch?v=6OBXJtEe-d8来对简单的C程序进行模糊处理
[使用honggfuzz进行模糊处理] Hongfuzz,checksec(pwntools),ASAN
https://www.youtube.com/watch?v=Lr8pLQRTHac
Windows
Libfuzzer
[使用libfuzzer模糊测试]如何使用LibFuzzer模糊简单的C程序
https://www.youtube.com/watch?v=hFva8kJQwnc&list=PLHGgqcJIME5m7HaHfACayoyN0TRe2PHRp
[使用libfuzzer,AFL进行模糊处理]如何使用AFL来模糊libfuzzer利用程序
https://www.youtube.com/watch?v=HfEqm3TrfwM&list=PLHGgqcJIME5m7HaHfACayoyN0TRe2PHRp&index=2
Radamsa
[使用Radamsa进行模糊处理]使用Radamsa进行简单的C程序模糊处理
https://youtu.be/1FRsXVNpynQ
WinAFL
[使用WinAFL进行模糊处理]用WinAFL进行简单的C程序模糊处理
https://www.youtube.com/watch?v=Va_Wtxf3DMc
[使用WinAFL进行模糊处理]什么是模糊处理功能,如何确保一切正常?
https://www.youtube.com/watch?v=HLORLsNnPzo