상세 컨텐츠

본문 제목

fastbin dup

SYSTEM HACKING/Exploit Tech

by koharin 2020. 6. 10. 18:38

본문

728x90
반응형

1. Double Free 검증 우회

- old와 p 포인터에 대한 청크 주소를 다르게 주면 된다.

- 2개의 힙 청크 할당 후 각각의 힙에 대한 포인터가 ptr1, ptr2라면, 

 

free(ptr1)

free(ptr2)

free(ptr1)

 

으로 old와 p 값이 같은지 체크하는 것을 우회해서 double free를 진행한다.

 

Double Free 후 fd에 각각의 청크 주소가 적혀있다.

ptr1 -> ptr2 -> ptr1

로 되어있고, 다음 청크 할당 시 ptr2가 할당된다. 

이때 fd 값을 overwrite_me로 덮으면

 

ptr1 -> ptr2 -> ptr1 -> overwrite_me

 

로 바뀔 것이다. 

 

2. 힙 재할당

- 1번째 청크 할당받는다.

- 이때 데이터로 overwrite_me를 줘서 fd를 덮는다.

 

3. 힙 재할당

- 2번째 청크를 할당받는다.

- fd에 적힌 1번째 청크가 fastbinsY에 적히고, 다음으로 할당될 것이다.

4. 힙 재할당

- 1번째 청크를 할당받는다.

- fastbinsY에 overwrite_me가 적힌다.

5. 힙 재할당

- overwrite_me에서 청크 할당받는다.

- 이때, "malloc(): memory corruption (fast)" 오류 메시지를 출력하고 비정상 종료된다. 조건을 만족해줘야 overwrite_me에서 청크를 할당받을 수 있다.

- fake chunk를 할당받으려는 fastbin 크기에 맞게 구성해준다.

처음에 전역변수 name에 입력받을 때 fake chunk를 생성해준다.

name에 prev_size가 0이고 size가 0x31인 fake chunk를 생성한다.

 

그리고 fd는 fake chunk가 시작하는 name 전역변수 주소로 덮는다.

 

0xdeadbeef와 일치하는지 확인 후 쉘을 띄우는 것을 확인할 수 있다.


 

 

728x90
반응형

'SYSTEM HACKING > Exploit Tech' 카테고리의 다른 글

Unsorted bin attack  (0) 2020.06.11
Tcache House of Spirit  (0) 2020.06.11
Tcache Dup  (0) 2020.06.10
Tcache  (0) 2020.06.10
Master canary  (0) 2020.06.08

관련글 더보기