level6에서 얻은 비밀번호를 통해 level7에 접속하고 힌트를 읽어보자. /bin/level7에 대하여 자세한 정보를 확인해보자. 실행가능한 파일임을 깨닫고 어떤 구성으로 되어있는 파일인지 디스어셈블링을 수행하였다. 우선 최초의 printf로 출력하는 내용을 확인해보았다. 패스워드를 입력하라는 문구와 함께 입력대기 상태에 놓이게 된다. 임의의 패스워드를 입력했을 경우 strncmp로 검색을 하게 되는데 이때 비교하게 되는 값은 mate이다. 즉, 패스워드는 mate를 입력하게 되면 해결된다. 만약에 입력한 패스워드가 mate일 경우 다음 단계인 level8의 비밀번호를 출력하고 프로그램은 종료가 된다. 만약에 비밀번호가 틀렸을 경우에는 다음과 같은 명령어를 system 함수로 수행하고 종료가 된다...
level6의 경우에는 로그인을 하자마자 힌트가 나오면서 프로그램이 입력대기 상태에 놓이게 된다. 별도의 명령어를 수행할 수 없는 상태가 된다. 현재 프로그램이 자동으로 실행된 상태로 무한정 대기상태이면 원하는 명령어를 입력할 수 없으므로 현재 프로그램을 종료시키도록 해야한다. 현재 프로그램을 종료하는 방법으로 SIGINT인 Ctrl + C를 입력하여 프로세스를 종료해보았다. level6의 쉘을 얻게되었다. 그렇다면 현재 디렉토리를 살펴보도록하자. 평소와는 다른 2개의 파일이 보인다. password와 tn이다. 우선 tn은 실행할 수 있는 파일이기에 실행해보도록 하겠다. 처음 로그인을 했을 때 자동으로 실행된 파일임을 알 수 있다. password파일은 cat로 열람해본 결과 다음 단계로 넘어갈 수 있..
level4에서 취득한 비밀번호를 통해서 level5 로 로그인을 하고 마찬가지로 hint를 확인해보자. 힌트에서 제공한 /usr/bin/level5 라는 파일이 실제로 존재하는지 확인해보자. 다음과 같으 힌트에서 제공한 파일이 실제로 존재하는 것을 알았고 level6의 권한을 가지고 있다는 것을 알 수 있다. 또한 실행가능한 파일임을 알고 디스어셈블링을 수행하여 어떤 흐름을 지닌 파일인지 확인해보도록 하겠다. 우선 최초에 수행되는 함수는 creat로 파일을 생성하는 함수이다. 파일 생성의 이름을 확인해보면, /tmp/level5.tmp라는 파일을 생성한 것을 확인할 수 있다. 그리고 나서 0x0804852d : cmpl $0x0,0xfffffffc(%ebp) 을 통하여 파일이 정상적으로 만들어 졌는지 ..