1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 |
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("이 파일은 fastbin에서의 간단한 double-free attack 을 보여준다.\n");
printf("세 개의 버퍼를 할당한다.\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를 다시 free한다면, crash가 일어날 것이다. 그 이유는 %p는 freelist의 가장 맨 위에 있기 때문이다..\n", a, a);
// free(a);
printf("따라서, 대신 우리는 %p를 free한다.\n", b);
free(b);
printf("이제 우리는 %p를 다시 free 할 수 있다. 왜냐하면 이 이후로 freelist의 맨 위에 있지 않기 때문이다. \n", a);
free(a);
printf("이제 freelist는 [ %p, %p, %p ] 를 가지고 있다. 만약 우리가 3번의 malloc을 했을 때, 우리는 %p를 두 번 할당 받을 것이다!\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));
}
|
cs |
'system' 카테고리의 다른 글
[how2heap translation] unsorted_bin_attack.c (0) | 2017.02.07 |
---|---|
[how2heap translation] fastbin_dup_into_stack.c (0) | 2017.01.11 |
MP3 CD Converter Exploit (0) | 2016.11.22 |
SEH(Structured Exception Handler) (0) | 2016.11.17 |
Use-After-Free 취약점 (0) | 2016.11.08 |