-
[BlackHat Heap] heap_info structureHack/Pwnable 2016. 11. 29. 21:40
glibc에서 다루는 힙은 다음과 같은 구조체로 구현되어있다.
1234567typedef struct _heap_info {mstate ar_ptr; /* Arena for this heap. */struct _heap_info *prev; /* Previous heap. */size_t size; /* Current size in bytes. */char pad[-5 * SIZE_SZ & MALLOC_ALIGN_MASK];} heap_info;cs ar_ptr : heap arena의 포인터, 힙과 아레나 사이를 얘기함
struct _heap_info *prev : 이전 heap_info 구조체에 대한 포인터, heap_info 구조체는 싱글 링크드 리스트로 유지된다.
size_t size : 현재 청크의 사이즈를 나타낸다.
char pad[..] : 적절한 정렬을 위해 패딩으로 사용된다.
heap_info 구조체는 힙의 첫번째 구조체이다. 가장 중요한것은 힙의 크기를 지정하고, 아레나의 데이터구조에대한 포인터를 제공한다.
자주 사용되는 구조체는 malloc_state, mstate 이 두개의 구조체이다.
'Hack > Pwnable' 카테고리의 다른 글
[BlackHat Heap] Chunks of memory (0) 2016.11.29 [BlackHat Heap] malloc_state structure (0) 2016.11.29 Allocate Heap with fgets (0) 2016.11.17 [Heap Exploit] Unsafe_unlink - how2heap ver (5) 2016.11.08 heap 문제 시나리오들.. (0) 2016.11.08