cgy12306

FTZ 18번 level18 본문

Wargame/FTZ

FTZ 18번 level18

cgy12306 2019. 7. 6. 19:53

ID : level18

PW : why did you do it

 

check와 deadbeef와 비교해서 같으면 shellout 함수를 호출해서 쉘을 획득하는 것 같다.

 

이 부분을 보면 x버퍼에 1바이트씩 읽어서 스위치 문을 돌린다.

x에 0x08이면 count-1을 해주고, 일반적인 값이 들어오는 경우 string[count]위치에 x를 넣고 count+1을 해준다.

 

디버깅을 해보면 main+91에서 ebp-104와 0xdeadbeef를 비교하는 것을 보면 ebp-104 부분은 check변수가 들어가는 곳 임을 알수 있다.

 

이 부분은 switch문의 영역이다. main+444부분을 보면 epb-2520와 0x8과 비교한다. ebp-252에 x가 들어가는 것을 알 수 있다. 그리고 0x8048731을 따라가 보면

 

ebp-112를 1 감소 시킨다. ebp-112는 count--에 해당하는 것을 알수 있다.

 

main+499를 보면 ebp-100영역이 string[count]임을 알 수 있다. 스택을 대충 그려보면

 

string 바로 위에 check가 위치하는 것을 볼 수 있다. string[0]이 문자열 저장위치라면 string[-4]에 deadbeef를 넣어주게 되면 check값이 deadbeef가 되며 deadbeef와 비교 할 수 있게 된다.

0x08을 4번 입력해주면 count는 -4가 된다. 그리고 그곳에 deadbeef를 넣어주면 쉘을 획득할 수 있게 된다.

 

 

비밀번호는 swimming in pink이다.

'Wargame > FTZ' 카테고리의 다른 글

FTZ 20번 level20  (0) 2019.07.06
FTZ 19번 level19  (0) 2019.07.06
FTZ 17번 level17  (0) 2019.07.06
FTZ 16번 level16  (0) 2019.07.06
FTZ 15번 level15  (0) 2019.07.06
Comments