반응형

해커스쿨 ftz 문제풀이 / level7

 

 

 

/bin/level7은 setuid가 걸려져 있습니다. 

/bin/level7을 실행시키면 패스워드 입력하는 부분이 나오고, 1234를 입력하면 아래와 같은 문구가 출력됩니다. 

하지만 /bin/wrong.txt 파일이 없다고 합니다. 

이 문제를 해결하기 위해 아래 링크를 확인하여, /bin/wrong.txt를 만들어 줍니다.

blog.naver.com/PostView.nhn?blogId=ilikebigmac&logNo=221491317713

 

해커스쿨 ftz level7 wrong.txt 오류 해결 방법

level7 을 풀다보면 wrong.txt 라는 파일이 없다는 에러메세지가 출력된다.​이는 가상머신상에 환경을 구...

blog.naver.com

위 링크대로 하였다면, 아래와 같이 이상한 내용이 출력됩니다. 

- 기호를 1로 바꾸고, _ 기호를 0으로 바꾸어 봅니다. 

1101101 1100001 1110100 1100101 이 되고, 이 2진수를 10진수로 변경하면 109, 97, 116, 145, 101가 나오고, 이 10진수를 ASCII code로 변경하면 m a t e가 됩니다. 

 

/bin/level7 실행 시 패스워드를 mate로 입력하면 다음 레벨의 패스워드가 출력됩니다.

 

 

반응형
반응형

해커스쿨 ftz 문제풀이 / level6

level6로 로그인하면 바로 hint가 출력됩니다. 

인포샵 bbs의 텔넷 접속 메뉴에서 많이 사용되던 해킹 방법이라고 합니다.

 

엔터를 입력하면 아래와 같이 화면이 나옵니다. 

1,2,3을 모두 입력해도 접속은 안되고 프로그램이 종료됩니다. 

 

이 화면에서 Ctrl + C 키를 입력하면 level6 권한으로 bash가 실행됩니다. 

hint가 보여지는 화면에서 입력을 기다리고 있다가 엔터를 누르면 텔넷 접속 서비스 순으로 출력되는 것을 생각할 수 있습니다. (hint 출력 -> 키 입력 대기 -> 키 입력 -> 텔넷 서비스 출력) 

텔넷 서비스가 출력되었을 때에는 Ctrl + C를 하면 ssh를 종료하도록 해 놓은 듯 합니다. 

level6 홈 디렉토리에 password가 있고, 이 파일의 내용을 보면 level7의 패스워드를 확인할 수 있습니다.

반응형
반응형

해커스쿨 ftz 문제풀이 / level5

 

level6의 권한을 얻는 문제입니다. 

 

/usr/bin/level5 프로그램은 level6에 setuid가 설정되어 있습니다.  

이 프로그램을 실행시키면 /tmp 디렉토리에 level5.tmp를 생성한다고 합니다. 

하지만, /tmp/에 가보면 level5.tmp 라는 파일은 찾을 수 없습니다. 

 

이는 /tmp/level5.tmp를 생성하고 바로 지우는 것을 유추할 수 있습니다. 

이 파일을 지우는 것은 /tmp/level5.tmp 파일이 level6 권한으로 만들어 졌기 때문입니다. 

그러면 /tmp/level5.tmp 파일을 level5의 권한으로 만들면, /usr/bin/level5 프로그램 실행시켜도 해당 파일이 삭제되지 않을 것입니다. 

 

level5.tmp를 level5의 권한으로 생성합니다. 

파일 내용 없이 만드니깐 크기는 0이 됩니다. 

 

그리고 나서 /usr/bin/level5를 실행시킵니다. 

그러면 /tmp/level5.tmp 파일 내용을 업데이트 하였지만, 이 파일에 대한 소유자는 level5이기 때문에 삭제하지는 못하게 되어 파일이 그대로 남아 있습니다. 파일 크기를 보면 약간 증가한 것을 볼 수 있습니다. 

이 파일의 내용을 보면 다음 레벨의 패스워드가 있는 것을 볼 수 있습니다.

반응형
반응형

해커스쿨 ftz 문제풀이 / level4

level4의 문제로 level5의 패스워드를 찾는 문제입니다. 

level4의 홈디렉토리에 있는 hint 파일을 보면 아래와 같이 /etc/xinetd.d/에 백도어가 심어져 있다고 합니다. 

/etc/xinetd.d/ 디렉토리에 backdoor라는 파일이 있고, 이 파일의 내용을 보면 아래와 같습니다.

해당 설정에 대한 내용은 아래와 같습니다. 

중요한 부분은 user와 server입니다. 

finger 서비스에 의해 level5의 권한으로 /home/level4/tmp/backdoor 파일이 실행된다는 의미입니다. 

# service finger => 서비스의 이름입니다. 
# disable = no => 데몬을 비활성화하지 않는 것으로 데몬을 활성화하겠다는 것입니다. 
# flags = REUSE => 서비스 포트가 사용 중인 경우 포트의 재사용을 허가한다는 의미입니다. 
# socket_type = stream => TCP/IP 프로토콜입니다. 
# wait = no => 이미 서비스가 연결된 상태에서 다른 요청이 들어오면 기다리지 않고, 바로 응답합니다. 
# user = level5 => level5의 권한으로 실행됩니다. 
# server = /home/level4/tmp/backdoor => xinetd에 의해 실행될 데몬 파일입니다. 
# log_on_failure += USERID => 정상적인 기동에 실패한 경우 USERID를 로그에 기록합니다. 

/home/level4/tmp에 finger 서비스에 의해 실행되는 backdoor 프로그램을 만듭니다. 

backdoor 프로그램은 level5의 권한으로 실행되기 때문에, level5의 패스워드를 확인하기 위해 system call로 my-pass를 실행하도록 하면, level5의 패스워드를 출력할 것입니다. 

 

finger 서비스를 실행하면 아래와 같이 level5의 패스워드가 출력되는 것을 볼 수 있습니다.

반응형

+ Recent posts