2017/01/11 - [Study :)/FTZ] - [해커스쿨] FTZ level5 풀이과정
level6의 힌트를 보자.
힌트를 보니 많이 사용하는 해킹 방법 이랜다...
그런데.. password라는 파일이 보인다... 뭐지.. 열어 보았다.
뭐지.. 바로 level7의 패스워드가 들어있다. 뭔가.. 문제가 잘못된듯 하다.
문제의 의도대로 다시 풀어보기로 했다.
password파일 말고도 tn이라는 파일이 보여서 한번 실행 시켜 보았다.
이러한 화면이 출력된다. 하이텔, 나우누리, 천리안 이렇게 번호를 선택해서 엔터를 쳐보면.. 해당 ip로 접속되는것 처럼 보이면서 아무런 반응이 보이지 않는다... 어떻게 해야 될까...
힌트에서 보았듯이 인포샵 bbs의 해킹방법을 검색해 보기로 했다....
인포샵 bbs의 해킹방법은... 'Ctrl+C'란다... 해당 입력 창에서 'Ctrl+C"를 누르면 명령어를 입력할 수 있는데 쉘이 실행된다고 한다..
응? 안되는데? 'Can't use ctrl+c'라는 문구와 함께.. Ctrl+C 단축키가 먹히지 않는다...
아무 키나 막 입력하고 엔터를 치니.. Putty자체가 꺼져버렸다...
다시 putty를 실행하고 나서 level6으로 접속해보았더니..
로그인하자 마자 hint가 출력되면서 입력값은 받는다.. 여기서 아무 키나 입력하게되면 <그림 6-4>와 같은 화면이 뜬다.
level5에서 su명령어로 level6으로 왓을때는 비정상적이였지만, 바로 level6으로 접속하니 정상적으로 실행되는것 같다.
분명 인포샵 bbs의 해킹 기법은 Ctrl+C라고 하였는데.. 안먹히니... 다시 하면 실행하고 힌트를 출력한 화면에서 해보기로 했다.
그랬더니.. 실행이 취소되면서 쉘이 실행되었다... 역시..
근데 뭔가 문제를 제대로 푼 기분이 아니랄까.... 그래서 gdb를 이용해서 리버싱을 해보기로 했다..
하나하나씩 리버싱 해보자... 후후=3
이 부분이 바로 접속하자 마자 hint가 출력되는 이유이다. '0x80486f2'값을 push 라고 system명령어로 실행한다.
'0x80486f2'값을 string으로 변환해 보니 'cat hint'가 되겠다.
그리고 나서 "getchar"함수가 실행되는데... 인자값엔 "%X\232\004\bh"가 있는데.. 뭔지 모르겠다.
그리고 나서 '0x80486fb'를 push하고 system함수로 출력한다. '0x80486fb'는 "clear"를 의미한다.
즉.. level6계정에 접속하면 바로 cat hint로 힌트를 출력하고 어떠한 키값을 입력하면 clear되는 것이다.
여기까지 집작해 보니... level6에 접속하자마자 hint가 뜨고 엔터를 눌렀을때 바로 화면이 지워지면서 <그림 6-3>과 같은 화면이 뜨는거 보니... <그림6-8>은 엔터값을 입력 받을때 까지 기다리는(?) 그런거 같다고 짐작이 된다.
위 사진을 보아 printf함수를 통해서 출력하고 있다. 아마 이 부분은 <그림 6-14> 부분을 printf함수로 만드는 과정인것 같다.
<main+208>부분이 <그림 6-14>의 "접 속 하 고 싶 은 bbs를 선 택 하 세 요 :" 부분이 되겠다.
그리고 나서 사용자로 하여금 입력받은 숫자를 [ebp-4] 부분에 저장을 한다.
그리고 나서 1, 2, 3과 입력받은 숫자와 비교한다.
사용자가 1을 입력하였을 경우 system("telnet 203.245.15.76") 을 실행,
사용자가 2를 입력하였을 경우 system("telnet 203.238.129.97")을 실행,
사용자가 3을 입력하였을 경우 system("telnet 210.120.128.180")을 실행 한다.
그리고 또 입력받은 값을 비교하는데, 어떠한 입력값을 받던 <main+341>부분으로 점프하게 된다.
<main+341>부분은 leave 명령어가 기다리고 있다.
이문제는 단순히 'Ctrl+C"명령어로 강제 종료시켜 password파일을 보고 다음 level로 넘어가는 문제인것 같다.