원문 : https://github.com/shellphish/how2heap/blob/master/fastbin_dup.c
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 | #include <stdio.h> #include <stdlib.h> 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)); } </stdlib.h></stdio.h> |
'System' 카테고리의 다른 글
How 2 heap - first_fit.c (0) | 2017.05.15 |
---|---|
LLVM -3 (2) | 2016.08.24 |
LLVM - 2 (0) | 2016.08.17 |
LLVM - 1 (0) | 2016.08.12 |
프로그램에서 일어날수 있는 레이스컨디션의 예제 (8) | 2015.04.01 |