상세 컨텐츠

본문 제목

[Heap exploitation] House of Force

SYSTEM HACKING/Exploit Tech

by koharin 2020. 1. 12. 21:40

본문

728x90
반응형

1. idea

 

topChunksize를 덮고 원하는 크기만큼 malloc해서 malloc이 특정 주소를 리턴하도록 하는 기법

 

* topChunk

- topChunk는 메모리의 마지막에 있는 특별한 chunk이다.

- mallocos에 더 많은 공간을 요구할 때 topChunkresize된다.

- topChunk 크기보다 작은 크기의 청크 요청 시 topChunk에서 chunk를 떼어주고,

topChunk 크기보다 더 큰 크기 요청 시 sbrk() 이용해 힙 영역을 확장해서 topChunk 사이즈를 키운 후 topChunk에서 떼어준다.

-topChunk에서 떼어주면 topChunk 주소는 현재 topChunk 주소 + 요청한 chunk 사이즈

-> topChunk 사이즈를 0xffffffffffffffff로 변조 후 특정 크기만큼 할당 시 topChunk의 주소는 요청한 사이즈에 상관없이 원하는만큼 청크 할당 가능

 

2. Exploit Plan

 

1) heap 영역 할당

2) top chunk의 사이즈 부분을 0xffffffffffffffff으로 덮어쓴다.

3) malloc()의 인자값으로 다음과 같이 계산된 값 전달해 heap 메모리 할당

원하는 주소 – chunk 헤더 사이즈 현재 topChunk 주소

-> 계산 값이 음수여도 상관없다. (2의 보수 표현으로 음수가 되므로 음수만큼 할당 후 topCHunk 주소가 내려가기 때문)

=> 청크의 bk 위치에 원하는 주소받게 된다.

4) malloc() 호출

- 공격자가 할당받기 원하는 영역 할당

 

3.  example code

 

 

 

728x90
반응형

관련글 더보기