목록Training/FTZ (4)
Never Stop Running
힌트를 보니 /etc/xinetd.d에 백도어를 심어놓았다고 한다.이 경로로 이동해보니 backdoor라는 파일이 있었다. 파일을 열어보니 finger 서비스가 있었다.(finger 서비스에 대한 자세한 내용)user가 level5이고, server가 /home/level4/tmp/backdoor이기 때문에 level5로 server가 실행된다. server 위치로 가서 backdoor.c 파일을 코딩한다. C언어로 코딩하였고, 이 프로그램 작동 시 my-pass라는 명령어를 실행한다. backdoor.c 파일을 backdoor로 컴파일한다. finger 명령어를 치면 현재 사용하고 있는 사용자 정보가 나온다.여기서 finger @localhost 명령어를 사용하면 실행이 된다. NextID : leve..
힌트를 보니 autodig라는 파일의 소스를 보여주고 있다. 이것을 이용해 level4의 권한을 얻으라는 것을 보아 이 파일에는 level4의 setuid가 걸려있다는 것을 알 수 있다. 그리고 소스파일을 분석해보면 autodig를 실행함과 동시에 인자값을 넣는데 argc = 2가 아니라면 "Auto Digger Version 0.9 Usage : autodig host"라고 출력된다. 만약 인자값이 argc = 2라면 "dig @ argv[1] version.bind chaos txt"라는 것이 system함수를 통해 실행된다. 그러니까 argc = 2인 상태로 쉘을 띄우거나 my-pass를 해야 한다.그러려면 두 가지 이상의 명령어를 한꺼번에 하는 방법을 알아야 하는데 이는 세미콜론(;)을 통해 할 ..
힌트를 보니 텍스트 파일 편집 중에 쉘의 명령을 실행시킬 수 있다고 나와있다.그렇다면 텍스트 파일 편집기에 level3의 setuid가 걸려있고, 그 편집기 사용 중에 명령어를 실행시켜 패스워드를 찾아낸다는 생각을 할 수 있다.일단 find명령어로 level3의 setuid가 걸린 파일을 찾아본 결과 editor라는 파일이 나왔다. editor를 실행시키는 동안 level3의 권한을 가지고 있기 때문에 이 상태에서 밖의 쉘에 명령을 내린다면 level3의 권한으로 명령어가 실행될 것이다.vi는 쉘로 빠져나가지 않고 외부명령어를 실행시킬 수 있는 방법이 있는데 바로 명령어 앞에 느낌표(!)를 붙이는 것이다. id 명령어 실행 결과 uid는 level3인 것을 확인할 수 있다.그렇게 my-pass를 실행시키..
힌트를 보니 level2의 권한으로 setuid가 걸린 파일을 찾으라고 되어있다.find명령어로 루트폴더부터 level2의 권한으로 setuid가 걸린 파일을 찾고 만약 찾은 파일이 오류가 뜨면 /dev/null로 보내게 만들었다. (find명령어 permission옵션에서 +와 -의 차이점은 검색하면 쉽게 나온다.)/bin/ExecuteMe라는 파일 하나가 나와서 실행시켜보았다. level2의 권한으로 한가지 명령어를 실행시켜준다는 메세지가 떴다.우리는 level2의 쉘을 얻으면 되기 때문에 쉘을 띄우는 명령어를 사용했다. id 명령어를 사용하니 uid가 level2인 것을 확인할 수 있었다. my-pass로 비밀번호를 확인하였다. NextID : level2PW : hacker or cracker