목록Security/Pwnable (146)
cdor1's lab
네?전 cat hint 해서 제가 힌트 봐도 되는데 ㅎㅎ 감사합니당 저거 엄청 오래된 서비스일텐데.. 접속이 될까?에.. 안되네너도.. 너도.. 아! 명령어를 바로 넣어볼까? ㅇㅇ 필터링 ...다 안되는데 어떻게 문제를 풀어야 하는거지..그때 문득 떠오른 생각이 리눅스에서 강제종료할때 사용하던 Ctrl+C가 생각났다. 오! 이제 메인 문제가 있는건가!힌트 봐야지~ 힌트가 전에 본거랑 같네???tn이라는 프로그램도 방금 본 프로그램이다..그러다 ls한 결과를 유심히 살펴보니 password라는 파일이 있었다. 여기 있었구나 ㅎ..다 풀고 알게된 것이지만 아마도 level6계정으로 접속하게 되면 hint의 내용을 보여주고 tn을 실행해주는것 같다.그래서 강.제.종.료를 할수 있었던 거겠지 level7의 아이..
음.. 무언가 level5.tmp 파일에 힌트가 있을것 같은 느낌이 든다.실행시켜서 내용을 봐야지! ㅎㅎ 내파일 어딧쪄? ...고뇌한 결과 프로그램이 생성하는 파일이름이랑 이름이 같은 파일을 /tmp 경로에 만들어놓으면 저 프로그램이 와서 무언가를 하고 가지 않을까?라고 생각하게 되었고 한번 시도해 보려 한다. 파일을 만들고! .생성 확인 하고!.프로그램 실행 시키고!.내용 보고!.패스워드가 있네?????(추가 힌트가 있을줄 알았다 ㅠ) level5의 아이디와 패스워드는level5/what the hell 이다.
그렇다고 한다. 문제에 나온 경로대로 /etc/xinetd.d/에 들어가 보니 이름이 backdoor인 수상한 파일이 있다.cat 명령어로 들여다 보니 finger라는 서비스로 /home/level4/temp/backdoor라는 파일이 실행되는 것으로 보인다. 저 경로대로 /home/level4/temp/에 들어가서 backdoor라는 파일을 찾아보았는데 backdoor은 커녕 아무런 파일도 보이지가 않는다.그래서 my-pass를 실행시키는 프로그램을 하나 만들어서 finger 서비스를 실행하면 level5의 패스워드가 노출되도록 하려고 한다. system("my-pass");를 실행하여 패스워드를 보여주는 코드를 하나 만들어 gcc -o backdoor backdoor.c 로 컴파일하였다.이제 fing..
요번에는 힌트에 파일 소스를 준다. 갑자기 어려워진 기분이 들 수 있는데 소스를 차근차근 살펴보자.autodig는 리눅스의 nslookup 정도로 생각하면 되겠다. strcpy(cmd,"dig @");strcat(cmd,argv[1]);strcat(cmd,"version.bind chaos txt");이 부분에서 dig @ (입력값) version.bind chaos txt이런 방식으로 명령어를 만든 후, system(cmd); 로 명령을 실행한다. 문제는 여기서 어떻게 쉘을 실행시켜야 하냐인데, more hints에 나와 있다시피 동시에 여러 명령어를 전달하는 방법과 문자열 형태로 명령어를 전달하는 방법을 알아보자. 요번에는 find명령어가 좀 바뀌었는데, 힌트에서 이름을 주었기에 이름으로 한번 찾아보..
그렇다고 한다. 1번과 같은 명령어에서 소유주만 level3로 바꾸어서 찾아보았다./usr/bin/editor라는 파일이 수상하다...요래요래 생긴 에디터가 나온다.이 에디터는 vi에디터라고 하는 것인데 리눅스에서 많이 쓰이는 에디터이다.이 vi에디터는 명령을 입력할때 :(명령) 방식으로 명령어를 입력한다.우리는 힌트에서 쉘의 명령어를 실행시킬 수 있다는 것을 알았다. 결과는 성공적이였고 level3로 바뀐 uid와 패스워드를 얻을 수 있었다. level3의 아이디와 패스워드는level3/can you fly? 이다.
level1의 아이디와 패스워드는 level1/level1이다.접속해서 ls명령어로 파일들을 보았더니 hint라고 쓰여있는 파일이 보인다.cat hint 명령어로 힌트의 내용을 보니 level2 권한에 setuid가 걸린 파일을 찾으라고 한다.여기서 setuid란 파일을 사용하는 동안에는 설정되어 있는 사용자 권한을 얻어서 사용하는 것이다.예를 들자면 패스워드 변경에는 root권한으로 setuid가 걸려있는 것이라고 생각하면 되겠다. find: 찾아라!/: 최상위 디렉터리부터-perm -4000: setuid 권한이 걸려있는 파일을 찾아라!-user level2: 소유주는 level2이다!2>/dev/null: 검색되지 않은 값은 화면에 보여주지 마라!이러한 명령어를 써서 find가 찾은 파일은 /bin..