아래처럼 생겨먹었다.
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 |