반응형

해커스쿨 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의 패스워드가 출력되는 것을 볼 수 있습니다.

반응형
반응형

exploit-exercises 문제풀이 / Nebula Level06 - john the ripper

 

flag06 계정 증명은 기존 유닉스 시스템에서 왔다고 합니다. 

문제 힌트가 별로 없어서 약간 어려운 문제인 듯 합니다. 

 

/home/level06, /home/flag06 디렉토리에는 아무런 파일이 존재하지 않습니다. 

각 계정의 패스워드 정보가 들어 있는 /etc/passwd 파일의 내용을 보겠습니다. 

다른 계정과 달리 flag06의 두번째 필드인 패스워드 칸에는 x가 아닌 문자열로 있는 것을 볼 수 있습니다.

이는 /etc/shadow 파일에 비밀정보가 있는 것이 아니라 해시 함수로 암호화되어 해시 코드가 생성된 것을 알 수 있습니다. 이 내용을 가지고 패스워드를 찾기위해 john the ripper라는 툴을 사용하겠습니다.  

kali 리눅스에서 john the ripper tool을 제공하는데, 이 kali 리눅스에서 해당 툴을 이용해 보겠습니다. 

test.txt 라는 파일을 만들어서 flag06의 계정정보를 입력하엿습니다. 

그리고 john ./test.txt를 실행시켜 패스워드를 크래킹하였는데, 패스워드가 hello로 결과값을 출력하는 것을 볼 수 있습니다. 

flag06 계정에 접속하여 getflag 명령어로 해결되었음을 볼 수 있습니다.

반응형

+ Recent posts