The House of Lore
The House of Lore
https://github.com/umbum/pwn/blob/master/how2heap/house_of_lore_fast.c
https://github.com/umbum/pwn/blob/master/how2heap/house_of_lore_small.c
```c
else
{
bck = victim->bk;
if (__glibc_unlikely (bck->fd != victim))
{
errstr = "malloc(): smallbin double linked list corrupted";
goto errout;
}
set_inuse_bit_at_offset (victim, nb);
// unlink
bin->bk = bck;
bck->fd = bin;
```
``c malloc(small)`` 시 chunk를 smallbins에서 제거하고, next serve chunk를 준비하는 unlink 과정을 이용한다.
unlink하면서 ``c bin->bk = victim->bk``가 되므로, 다음 반환 chunk는 ``c victim->bk``가 된다.
smallbins에 속해 있는 `` victim``을 조작해 ``c victim->bk = fake_chunk``로 만들면, fake_chunk를 smallbins에 연결할 수 있다.
바로 이후 ``c malloc(small)`` 때는 `` victim``이 반환되고, fake_chunk는 그 다음 ``c malloc(small)`` 때 반환된다.
limitation
#1 fake_chunk와 bypass_buf가 존재하며 컨트롤할 수 있어야 한다.
#2
!
- fastbin attack
fastbin에 fake chunk가 들어간다. - The House of Lore
smallbin에 fake chunk가 들어간다.
fastbin attack은 size가 속해있는 fastbin 집단의 size와 일치해야 한다는게 단점.
그래도 조건 맞추기가 비교적 수월한 듯.
'Security > System Exploit' 카테고리의 다른 글
unsorted bin attack (0) | 2017.08.15 |
---|---|
[UNDEAD] unlink (0) | 2017.08.15 |
fastbin attack / fastbin_dup (0) | 2017.08.15 |
The House of Spirit (0) | 2017.08.15 |
Poison null byte (0) | 2017.08.15 |