본문 바로가기

저세상 해킹/포너블

malloc chunk 구조체

아래처럼 생겨먹었다.

1
2
3
4
5
6
7
8
9
10
11
struct malloc_chunk 
{  
    INTERNAL_SIZE_T      prev_size;  /* Size of previous chunk (if free).  */  
    INTERNAL_SIZE_T      size;       /* Size in bytes, including overhead. */  
 
    struct malloc_chunk* fd;         /* double links -- used only if free. */  
    struct malloc_chunk* bk;          /* Only used for large blocks: pointer to next larger size.  */  
 
    struct malloc_chunk* fd_nextsize; /* double links -- used only if free. */  
    struct malloc_chunk* bk_nextsize;
};
cs

 

용어를 좀 정리해 보자면...

 

FD - 이전 청크의 주소 (즉 내 앞에 있는 청크) 

BK - 다음 청크의 주소 (내 뒤에 있는 청크)

 

size붙은건 해당하는 거의 크기라고 생각하면 된다....

요렇게 생겨 먹은듯..

위에처럼 생겨 먹었을거 같다.

 

fd, fd_nextsize랑 prev_size가 free된 이후에 할당이 되는 이유는, 일단 내가 free되어야 앞에 chunk의 정보를 알 수 있지 않을까 싶다.

 

엄... 뒤에 알게 된건데 nextsize들은 largebin에서만 사용되는거랜다.

'저세상 해킹 > 포너블' 카테고리의 다른 글

ROP gadget으로 쉘 따기 feat. calc  (0) 2019.10.25
Chunk - FLAG  (0) 2019.09.16