Overlapping chunks1과의 차이점 :
1. Overlapping Chunks1 : chunk의 size를 수정해서 다음 청크가 TopChunk를 가리키게 한다.
2. Overlapping Chunks2 ; Chunk의 size를 수정해서 다음 청크가 FreeChunk를 가리키게 한다.
Conditions
1. 공격자에 의해 free chunk를 생성할 수 있어야 한다.
2. 공격자에 의해 free chunk의 size 영역에 값을 저장할 수 있어야 한다.
Exploit plan
1. 5개의 heap 생성
* malloc_usable_size()
malloc_usable_size – 힙에서 할당한 메모리 블록의 크기 얻기
#include<malloc.h>
size_t malloc_usable_size(void *ptr);
malloc_usable_size() 함수는 ptr이 가리키는 블록 내에서 사용 가능한 바이트 수를 반환한다.
(ptr은 malloc이나 관련 함수로 할당한 메모리 블록에 대한 포인터)
반환값 : ptr이 가리키는 할당 메모리 블록에서 사용 가능한 바이트 수 반환. Ptr이 NULL이면 0 반환
참고 : https://github.com/wariua/manpages-ko/wiki/malloc_usable_size(3)
2. 4번째 청크 해제
- p5가 있기 때문에 top chunk와 합쳐지지 않는다.
- 이 영역이 해제되면 해당 영역이 fastbinsY에 등록된다.
3. 2번째 청크의 사이즈를 다음과 같이 변경한다.
- 2번째 청크 size = 2번째 청크 크기 + 3번째 청크 크기 + PREV_INUSE(0x1)
- malloc() 함수가 p2의 next chunk가 p3가 아닌 p4로 판단하게 된다.
4. 계산한 값만큼 청크를 요청한다.
- 6번째 청크를 p2+p3 크기(2000)만큼 할당한다.
- p3 영역을 덮을 수 있는 영역을 할당받는다.
[Exploit Tech] Return to dl resolve (0) | 2020.02.21 |
---|---|
[Heap Exploitation] Poison null byte(Shrink chunk) (0) | 2020.01.30 |
[Heap Exploitation] Overlapping chunks (0) | 2020.01.17 |
[Heap Exploitation] The House of Lore (0) | 2020.01.15 |
[Heap exploitation] House of Force (0) | 2020.01.12 |