일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- malware
- Dynamic Analysis
- __environ
- Android
- heap
- _IO_FILE Arbitrary Address Write
- seccomp
- 나뭇잎 책
- shellcode
- Lazenca
- H4CKING GAME
- master canary
- tcache
- Reversing
- HackCTF
- ROP
- DreamHack
- DFC 2022
- BOF
- vtable
- _IO_FILE Arbitrary Address Read
- srop
- UAF
- DFB
- heap exploit
- _IO_FILE
- RTL
- GOT overwrite
- heap feng shui
- K-shield Junior
- Today
- Total
Studying Security
[Heap Exploit] Unsorted bin attack 본문
malloc()이 unsorted bin에 등록된 chunk를 재할당 할때
해당 chunk를 unsorted bin의 list에서 어떻게 삭제하나?
- 메모리 할당 요청(malloc)
- 요청 size에 적합한 chunk가 fast bin, small bin, large bin에 존재하는지 확인한다.
- 2번 과정에서 적합한 chunk를 찾지 못하면 unsorted_chunks(av)->bk와 unsorted_chunks(av)의 반환 값 비교한다.
- 서로 다르다면 Unsorted bin에 free chunk가 존재한다는 뜻을 의미
- Unsorted bin에 free chunk가 있다면 unsorted_chunks->bk의 값을 victim에 저장한다.
- victim->bk가 가지고 있는 데이터를 bck에 저장한다.
간단한 그림
Unsorted bin에 free된 chunk가 존재한다는 사실을 bk와 unsorted_chunks(av)랑 같지않다는 것을 확인함으로써 알 수 있습니다.
만약 해당 요청에 적합한 chunk가 존재한다면 unsorted bin은 doubly linked list이기 때문에 chunk의 fd와 bk 포인터를 변경해주어야 합니다.
자세한 그림
해당 코드(참고 glibc-2.25)
bin_at은 main_arena[0]의 주소에서 16을 뺀 값을 반환합니다.
av는 malloc_state의 구조체입니다.
Unsorted bin attack
- 할당자가 Unsorted list에서 chunk를 삭제하기 전에, free chunk의 bk에 값을 덮어써서 원하는 영역에 main_arena의 주소("&main_arena.bin[0] - 16")를 저장하는 기술입니다.
- 공격자가 stack 주소(0x7fffffffe248)를 Unsorted list에 등록된 chunk의 "bk"에 덮어쓰면, 할당자는 bck에 보관된 주소가 0x7fffffffe248이기 때문에 unsorted_chunks()가 반환한 주소를 bck→fd(0x7fffffffe258)에 저장합니다.
Reference
unsorted bin attack[Korean] - TechNote - Lazenca.0x0
“html” 매크로 렌더링 오류 Notify your Confluence administrator that "Bob Swift Atlassian Apps - HTML" requires a valid license. Reason: VERSION_MISMATCH Excuse the ads! We need some help to keep our site up. “html” 매크로 렌더링 오
www.lazenca.net
'개념 정리 > Heap' 카테고리의 다른 글
[Heap Exploit] Poison null byte (0) | 2022.05.04 |
---|---|
[Heap Exploit] Overlapping chunks (0) | 2022.05.02 |
[Heap Exploit] Heap Feng Shui (0) | 2022.05.01 |
[Heap Exploit] Heap Spray (0) | 2022.05.01 |
[Heap Exploit] Double Free Bug(DFB) (0) | 2022.04.22 |