[HITCON TRAINING] LAB9 → WRITE UP
해당 바이너리의 보호기법을 확인해본다.
해당 바이너리의 보호기법으로는 NX bit가 적용되어 있다.
해당 바이너리의 소스코드를 확인해보자.
해당 소스코드를 분석해본 결과 Line12에서 포맷 스트링 버그가 발생하는 것을 확인할 수 있다.
하지만 해당 버퍼공간이 전역변수로 선언되어 있기 때문에 포맷스트링 버그를 통해 입력버퍼 공간에는 접근하는 것은 불가능하다는 문제가 존재한다.
먼저 포맷스트링을 통해 해당 공간의 데이터를 출력해보자.
다음과 같이 스택공간이 출력되는 것을 확인할 수 있다.
직접적으로 우리가 원하는 공간에 접근하여 값을 쓰기 위해서는
일반적인 포맷 스트링에서는 버퍼공간에 접근할 수 있어서 해당 공간에 접근하고자 하는 공간의 주소를 입력한후 해당 버퍼를 통해서
%s으로 해당 값을 출력하거나, %n으로 데이터를 조작할 수 있었다.
하지만 해당 바이너리에서는 직접적으로 버퍼 공간에 메모리를 입력하여 접근할 수는 없으나 노란색 공간 내부에서 가르치는 공간은 초록색 공간이다.
결과적으로 포맷 스트링으로 접근할 수 있는 공간에 값을 변조할 수 있다는 것이다.
뿐만 아니라
빨간색 공간이 의미하는 것은 do_fmt 함수가 종료되었을 경우 Return할 주소인 Return Address이다.
이를 기반으로
다음과 같이 스택공간을 구성가능할 것으로 예상된다.
익스플로잇을 작성하면
'PWNABLE > HITCON TRAINING' 카테고리의 다른 글
[HITCON TRAINING] LAB8 (0) | 2019.01.15 |
---|---|
[HITCON TRAINING] LAB7 (1) | 2019.01.13 |
[HITCON TRAINING] LAB6 (0) | 2019.01.13 |
[HITCON TRAINING] LAB5 (0) | 2019.01.09 |
[HITCON TRAINING] LAB4 (0) | 2019.01.08 |