상세 컨텐츠

본문 제목

[Heap Exploitation] Overlapping Chunks 2

SYSTEM HACKING/Exploit Tech

by koharin 2020. 1. 26. 17:03

본문

728x90
반응형

Overlapping chunks1과의 차이점 :

1. Overlapping Chunks1 : chunksize를 수정해서 다음 청크가 TopChunk를 가리키게 한다.

2. Overlapping Chunks2 ; Chunksize를 수정해서 다음 청크가 FreeChunk를 가리키게 한다.

 

Conditions

1. 공격자에 의해 free chunk를 생성할 수 있어야 한다.

2. 공격자에 의해 free chunksize 영역에 값을 저장할 수 있어야 한다.

 

 

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이 가리키는 블록 내에서 사용 가능한 바이트 수를 반환한다.

(ptrmalloc이나 관련 함수로 할당한 메모리 블록에 대한 포인터)

반환값 : ptr이 가리키는 할당 메모리 블록에서 사용 가능한 바이트 수 반환. PtrNULL이면 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() 함수가 p2next chunkp3가 아닌 p4로 판단하게 된다.

 

4. 계산한 값만큼 청크를 요청한다.

 

 

- 6번째 청크를 p2+p3 크기(2000)만큼 할당한다.

- p3 영역을 덮을 수 있는 영역을 할당받는다.

 

 

 

728x90
반응형

관련글 더보기