Heap을 제대로 파보려고 만든 Heap 카테고리 첫 글입니다.
처음은 House of 시리즈중 제 생각에 가장 할만한 Spirit 기법을 들고 왔습니다.
The house of Spirit 는 fastbin을 공격하는 기법으로, 같은 크기만큼을 재할당 할경우 같은 주소를 반환하는 fastbin 특성을 이용하여, 원하는 주소에 원하는 값을 쓸 수 있게 합니다.
먼저 일반적인 상황을 분석해 봅시다.
<입력값을 넣은 후 buf - heap 의 모습 >
< free(heap1)이 진행되어 fastbin 에 heap1의 주소가 들어간 모습 >
이를 overflow 를 통해서 fastbin 에 들어가는 주소를 fake chunk 의 주소로 바꾸어 보겠습니다.
"A"*8 + "\x68\xd1\xff\xff"+"A"*24+"\x00\x00\x00\x00"+"\x29\x00\x00\x00"*15
위와같은 페이로드를 사용합니다.
fastbin 에 우리가 지정한 fake chunk의 주소가 들어간것을 볼 수 있습니다.
그렇다면 후에 같은크기로 malloc을 할시에는 저 fake chunk의 주소가 반환되게 될것입니다.
여기서 페이로드를 보면 heap size 또한 넣어준것을 확인할 수 있는데,
이는 malloc.c 를 보게 되시면 free 함수에서 free를 할 때 인접한 chunk 의 size를 확인하게 되어, 이를 알맞게 넣어준 것입니다.
이런식으로 반환되는 malloc 의 주소를 조정함으로써 exploit 에 활용할 수 있습니다.
추후 관련된 문제를 하나 들고 오겠습니당 (grin)
'Pwnable > Heap' 카테고리의 다른 글
Unsortedbin attack (0) | 2018.02.23 |
---|---|
[HITCON-Trainning] lab 11 (0) | 2018.02.19 |
House of Top (0) | 2018.01.09 |
unsafe unlink (0) | 2018.01.04 |
Fastbin Consolidate (0) | 2017.12.18 |