본문 바로가기

PWNABLE/HITCON TRAINING

[HITCON TRAINING] LAB7

[HITCON TRAINING] LAB7 → WRITE UP



먼저 해당 바이너리의 보호기법을 확인해본다.




해당 바이너리는 인텔 기반의 32비트 바이너리이며


보호기법(mitgation)으로는 Stack CanaryNX bit가 적용되어 있는 것으로 확인된다.



해당 바이너리의 소스코드를 확인해보자.




해당 바이너리의 소스코드를 확인해본 결과 입력받는 버퍼의 크기가 입력 길이보다 크기 때문에 


Buffer Over Flow 취약점은 발생하지 않을 것으로 확인된다.



하지만 Line 25에서 입력받은 버퍼 그대로를 printf(buf); 와 같은형태로 출력하고 있기 때문에 

포맷 스트링 버그(Format String Bug)가 발생할 것으로 예상된다.




서식문자를 버퍼에 입력했을 경우 다음과 같은 양상을 보이는 것으로 확인된다.


더나아가 첫번째 입력한 값을 10번째 offset에서 확인할 수 있다.



포맷스트링 버그가 발생하는 것을 확인하였으므로 서식문자 %s를 언급하고자 한다.


서식문자 %s는 해당 주소를 참조하여 해당 주소가 가지고 있는 값을 문자열로 출력해주는 형태의 서식 문자이다.



결론적으로 서식문자 %s를 통해서 전역변수 password 공간의 데이터를 출력할 수 있다는 이야기이다.




이를 기반으로 페이로드를 작성해보자.





참고로 "%10$s" 해당 서식문자는 바로 10번째 offset에 대한 출력을 의미한다.


해당 페이로드를 실행하면




다음과 같이 플래그 파일을 확인하려는 루틴이 실행된 것을 볼수있다.









'PWNABLE > HITCON TRAINING' 카테고리의 다른 글

[HITCON TRAINING] LAB9  (0) 2019.01.20
[HITCON TRAINING] LAB8  (0) 2019.01.15
[HITCON TRAINING] LAB6  (0) 2019.01.13
[HITCON TRAINING] LAB5  (0) 2019.01.09
[HITCON TRAINING] LAB4  (0) 2019.01.08