나의 기록, 현진록

[War Game] ftz level18 본문

War Game/ftz

[War Game] ftz level18

guswlsdk 2018. 1. 28. 17:30
반응형

ftz level18








다음은 hint의 내용이다.




좀 길지만 핵심은 check 변수에 0xdeadbeef가 있으면


shellout 함수를 실행하고


shellout 함수의 내용은 문제를 풀기 위한 코드가 있다는 것이다.


check 변수의 거리를 알아내자






main+91을 보면


ebp-104와 0xdeadbeef을 비교한다.


ebp-104가 check 변수이다.


ebp-104에 0xdeadbeef를 넣어야 한다.







페이로드를 작성해야 하는데


hint의 내용을 조금 더 알아보자.


switch 문의 default를 보면


표준 스트림으로 받아온 문자열을


string 배열 count 위치에 저장할 것이다.


count는 0으로 초기화되어 있다.


그러나


 string 배열이 check 배열보다 더 높은 주소에 있다.


즉, string 배열에 버퍼오버플로우를 일으켜도 check 변수에 접근하지 않는다.


접근하기 위해선 string 변수보다 4byte 뒤로 가야 check 변수의 위치이다.


방법을 찾아야 한다.



switch 문의 case 0x08을 보자.


0x08을 입력 받으면 count가 감소한다.


string 배열에서 -4만큼 가면 check 변수이다.



페이로드 작성


\x08을 4번 입력해주고 0xdeadbeef를 입력하자.




반응형

'War Game > ftz' 카테고리의 다른 글

[War Game] ftz level20  (0) 2018.01.29
[War Game] ftz level19  (0) 2018.01.29
[War Game] ftz level17  (0) 2018.01.28
[War Game] ftz level16  (0) 2018.01.28
[War Game] ftz level15  (0) 2018.01.28