#dokydoky
[Heap Exploitation] Fastbin attack 본문
Reference
- Double free
- Forging chunks
- House of spirit
Overview
Fastbin
32bit machine
- min size(metadata 포함) : 0x10 (header: 0x8, data: 0x8)
- max size : 0x40 (header: 0x8, data = 0x38)
- alignment size : 0x8
64bit machine
- min size : 0x20 (header: 0x10, data: 0x10)
- max size : 0x80 (header: 0x10, data: 0x70)
- alignment size : 0x10
Attacks
Double Free
공격개요
fastbin size의 chunk를 double free하여, malloc을 여러번 호출했을 때 동일한 주소를 2번 반환 받을 수 있다.
제약조건
- fastbin의 top에 있는 chunk와 free하는 chunk가 같으면, double free corruption.
Forging chunks
공격개요
fastbin size의 chunk가 free되고 fastbin에 들어간 뒤, 해당 free된 chunk의 fd의 값의 조작이 가능하다면 malloc의 결과로 원하는 주소를 리턴받을 수 있다.
(fastbin뿐만 아니라, 다른 binlist에도 적용되는 내용.)
제약조건
단, malloc 함수내에서 아래와 같이, 요청한 크기와 fastbin에서 꺼낸 chunk의 크기가 같은 것을 확인하므로, fakechunk.size를 chunk.size와 동일하게 설정해줘야 한다.
House of spirit
공격개요
free되기 전에 free되는포인터(ptr)를 조작하여 binlist에 fake chunk을 넣을 수 있는 방법.
다른 binlist들도 가능하나, fastbin이 선호됨.
제약조건
fakechunk.size : fastbin range (fastbin을 이용할 경우)
fakechunk's next chunk's size : >2*SIZE_SZ AND < av→system_mem(128kb by default for the main arena)
'System Hacking' 카테고리의 다른 글
[Heap Exploitation] Smallbin attack (0) | 2017.08.09 |
---|---|
[Heap Exploitation] malloc & free(glibc 2.23) (0) | 2017.08.09 |
[Pwnerable.tw] Ghostparty(450pts) - source code audit & exploit (0) | 2017.05.24 |
[Pwnerable.tw] Ghostparty(450pts) - reversing C++ string, vector (0) | 2017.05.24 |
[CVE-2013-2028] Nginx stack-based buffer overflow(4) - NX, ASLR, Canary (3) | 2016.12.27 |
Comments