본문 바로가기

House of botcake

@eouya22025. 10. 31. 09:07

 

힙에 대한 개념이 부족한 상태에서 문제 그냥 부딪혀 보는데, 이것도 나름 재밌다.

how2heap이나 다른 블로그 구글링 해가면서 코드 취약점/상황에 맞는 공격 기법 찾는게 묘미다.

 

House of botcake(glibc 2.35 기준)

unsorted bin을 이용해서 tcache와 unsorted bin에 각각 동일한 freed chunk가 들어가도록 할 수 있다.

fastbin 범위에 들어가지 않도록 size 0x100의 청크를 기준으로 진행한다.

 

1. 0x100 크기의 청크를 10개 할당한다. 

- tcache 들어갈 chunk 7개

- prev chunk 1개

- target chunk 1개

- dummy chunk 1개(병합 방지용이므로 크기는 상관 없다.)

 

2. 청크 7개를 해제하여 tcache를 다 채운다.

 

3. target chunk를 해제한다. 이 때, unsorted bin으로 들어간다.

 

4. prev chunk를 해제한다. 이 때, prev chunk와 target chunk는 unsorted bin에 병합된 상태로 존재한다.

 

5. 청크를 하나 할당하여 tcache에 자리를 하나 만든다.

 

6. target chunk를 해제한다.

 

-> target chunk는 unsorted bin에서 병합된 상태로 존재하면서 동시에 tcache에도 존재하게 된다.

 

 

malloc의 size를 지정할 수 있는 경우, 0x100보다 큰 사이즈의 청크를 할당받으면 unsorted bin에서 청크를 분할받아 가져오는데, 

이는 target chunk와 overlap 되어있는 상태이다. 적절히 오프셋을 확인하여 데이터를 보내면, DFB된 target chunk의 fd를 조작할 수 있어 tcache poisoning 공격이 가능하다.

 

 

'PWN > 개념' 카테고리의 다른 글

_IO_cleanup, _chain 조작을 통한 FSOP  (0) 2025.12.12
calloc without memset ..  (0) 2025.10.27
docker process에 gdb attach 방법 그 외  (0) 2025.09.30
fflush() 이용한 libc leak, 그 외  (0) 2025.09.11
fastbin attack시의 size check  (0) 2025.09.08
eouya2
@eouya2 :: eouya2

개인공부 기록 / 틀린거 있으면 돌팔매질 부탁드립니다

목차