Use After Free漏洞Demo

漏洞产生的原因是释放了一块内存之后、未重置该内存的一些引用指针、导致指针悬空,被释放的内存可能被恶意利用

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <windows.h>
#include<stdio.h>
void Myrun(char*);
typedef void (*myfun)(char*);
int main()
{
myfun* fun1 = (myfun*)malloc(0x10);
fun1[1] = Myrun;
free(fun1);
fun1[1]((CHAR *)"+++++Free and use Fun1+++++++");
/***************释放之后由于指针未赋值为NULL、仍可使用*******************/

myfun* fun2 = (myfun*)malloc(0x10);
fun2[1]((CHAR*)"+++++use Fun2+++++++");
/***************释放之后调用malloc申请同样大小内存又申请到刚才那块内存、仍可使用*******************/
getchar();
return 0;
}
void Myrun(char* str)
{
printf("%s\n",str);
}