본문 바로가기

PWNABLE/HITCON TRAINING

[HITCON TRAINING] LAB9

[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