UAF原理及相关一道CTF

前言

通过学习UAF原理及其在CTF中的应用,通过理论是实践相结合,可以更好地掌握UAF漏洞。

UAF漏洞原理

#include
#include

int main()
{
	char *p1, *p2;
	p1 = p2 = NULL;
	p1 = (char *)malloc(10);
	if (p1 == NULL)
	{
		printf("fail to malloc p1");
		exit(1);
	}
	memcpy(p1, "message1", 10);
	printf("p1: %x, %s\n", p1, p1);
	free(p1);
	p2 = (char *)malloc(10);
	{
		printf("fail to malloc p1");
		exit(1);
	}
	memcpy(p2, "message2",10);
	printf("p2: %x, %s", p2, p2);
	free(p2);
	return 0;

上面程序的运行结果如下

p1: a92fc8, message1
p2: a92fc8, message2

不同机器的地址是不一样的,但是都会发现p1和p2的地址是相同的。

相关CTF题目

例题1

https://github.com/xerof4ks/heapwn/tree/master/rhme3
https://cloud.tencent.com/developer/article/1180406

你可能感兴趣的:(二进制安全)