The House of Spirit
The House of Spirit
stack overflow로 stack에 있는 포인터 변수 hptr을 `` fake_chunk`` addr로 overwrite.
이후 ``c free(hptr)``하면 fastbin에는 ``c fake_chunk`` addr이 추가되므로, 그 다음 반환 chunk는 `` fake_chunk``
```c
/* set fake_chunk */
fake_chunk[1] = arbitrary_size;
/* set next chunk size */
...
void *hptr = malloc(SIZE);
char buf[4];
strcpy(buf, argv[1]); // stack overflow
free(hptr) // fake chunk is added in fastbin
fake = malloc(SIZE) // return fake chunk
```
``c fake_chunk->size`` 채워주어야 한다.
일반적인 경우 top chunk size가 존재하기 때문에 알아서 pass하지만, `` fake_chunk``는 그렇지 못하기 때문에
반드시 fake_chunk 뒤쪽에 next chunk의 size field를 넣어주어야 한다.
이 check만 통과하면 되므로 fake chunk's size와 같을 필요는 없으며 알맞은 위치에 size만 넣어주면 된다.
'Security > System Exploit' 카테고리의 다른 글
The House of Lore (0) | 2017.08.15 |
---|---|
fastbin attack / fastbin_dup (0) | 2017.08.15 |
Poison null byte (0) | 2017.08.15 |
overlapping chunk (0) | 2017.08.15 |
one_gadget / libc-database (0) | 2017.08.13 |