리눅스 (8) 썸네일형 리스트형 level8 level8 접속후 hint 파일을 열었습니다. hint의 내용은 파일의 크기가 2700인 것을 찾으라는것 같습니다. -size 옵션 w : 2byte b : 512byte(블록) c : byte find 명령으로 파일크기가 2700인것을 찾아봤습니다. /etc/rc.d 디렉터리로 이동해서 수상한 found.txt 파일을 찾았습니다. 해답이 있어보이내요. found.txt 파일을 실행해봤습니다. 패스워드가 암호화 되어있는 shadow 파일의 구조와 같습니다. shadow 파일구조 root(1) : (2) : (3) : (4) : (5) : (6) : (7) : (8) : (9) 1 = 사용자 계정 2 = 패스워드를 암호화 시킨 값 - 비어있을 시 ( : : ) 에는 로그인 할 때 패스워드가 필요없음 - .. level7 우선 바로 hint 열어보겠습니다. /bin/level7 명령을 실행하면 패스워드를 입력한다고 하내요. 그밑에는 주저리주저리 우선 실행해보았습니다. 패스워드를 우선 모르기에 엔터도 쳐보고 이것저것 막 입력해도 밑에 응답밖에 안나오더군요. bin에 wrong.txt 가 뭔지 모르겠으나 ls로 봐도 저런파일은 없었습니다. 그래서 이것저것 시도해보고 txt파일 만들고 해봤는데 안되길래 결국 구글링했습니다. 원래는 wrong.txt파일이 있어야 한다는군요.. 나머지는 구글링 ~~~ Insert the Password : mate level8 passwd : "break the world" level6 level6로 접속했더니 저런 메시지가 나왔습니다. 인포샵 bbs의 ~~뭐라고 하는데 저는 잘 모르겠습니다. 엔터키를 눌렀는데 다음 창으로 넘어가집니다. 우선은 1번을 눌렀는데 Trying... 하면서 장시간 기다렸는데 아무반응이 없내요. 여기서부터 뭔가 시작이겠거니 생각했습니다. 다시 처음으로 돌아가서 hint의 내용을 잘 살펴보았습니다. 물론 hint의 내용이 뭔지 잘 알지는 못했습니다. 그래서 바로 구글링을 시도했습니다. 인포 bbs의 텔넷 서비스 해킹에서는 ctrl + c를 뻔질나게? 누르면 성공된 사례가 있답니다. ( 다되는건 아닌가봐요 ) hint를 활용해서 문제를 푸는 key는 ctrl + c 라고 생각해서 다시 도전해봤습니다. 그랬더니 프로세서 강제중지 키가 먹히질 않내요. 다짜고짜 이것저.. level5 빠르게 hint 파일을 열어보겠습니다. /tmp 디렉토리는 임시파일을 생성 또는 삭제하는 공간입니다. (임시로 읽어들여야 하는 입출력 파일 저장) level5 명령에 level6 setuid가 설정된 것 같습니다. 우선 tmp 디렉토리로 이동한다음 뭐가 있는지 확인해봤습니다. 네 아무것도 없내요. /usr/bin/level5 프로그램은 /tmp 디렉토리야 level5.tmp 라는 파일을 생성해 준다고 합니다. 위에서 실행하고 tmp에서 사라질것 같아 우선 파일을 만들었습니다. -> tmp 디렉토리에 저장한 파일은 언제 삭제될지 보장할 수 없다고 배웠습니다. 혹시나 하는 마음에 /usr/bin 으로 넘어가서 level5의 존재를 확인해보았습니다. level5를 실행하고 다시 /tmp 디렉토리로 넘어왔습니다.. level4 앞에서 한거와 같이 ls로 무엇이 잇나 확인 후 hint를 실행합니다. hint를 확인해보니 저 위치에 백도어가 심어놓았습니다. 궁금하니 확인해 보겠습니다. /etc/xinetd.d 디렉토리를 확인해보니 맨위에 backdoor 라는게 보이는군요. 저 위치로 이동해서 backdoor라는 파일을 들여다 보았습니다. finger는 현재 시스템에 로그인된 사용자를 보여줍니다. 그밑에 내용들도 봐보겠습니다. service finger : 서비스의 이름 disable = no : 데몬을 비활성화 하지 않음 ( yes : 데몬 비활성화 ) flasgs = REUSE : 서비스 포트가 사용중일 경우 해당 포트의 재사용을 허가 socket_type = stream : 소켓 타입을 TCP/IP 프로토콜로 선택 wait =.. level3 우선 level3의 hint 내용을 보겠습니다. autodig 의 소스코드를 살펴보면, char cmd[100]; // 크기가 100인 char형 배열을 선언합니다. if(argc != 2) // argc 변수가 2가 아닐경우 if문을 실행 { printf("Auto Digger Version 0.9\n"); // printf 내용 출력 printf("Usage : %s host \n", argv[0]); // printf 내용 출력 } strcpy(cmd, "dig@"); // strcpy : 문자열을 다른 배열이나 포인터로 복사합니다. dig@를 cmd에 복사 strcat(cmd, argv[1]); // strcat : 문자열을 서로 붙이는 함수입니다. cmd 뒤에 argv[1]를 붙여줍니다. sys.. level2 level2는 vi 편집기를 일정 수준 다루어야 수월하게 풀어갈 수 있어 보입니다. 역시 level2에서도 ls명령어로 hint 파일을 확인합니다. hint 파일을 확인해보니 vi 편집기 사용 중 쉘 명령을 실행할 수 있다고 합니다. 우선 level1에서 사용했었던 find 명령으로 setuid가 걸려있는 파일을 찾아보겠습니다. find 명령과 옵션들을 사용해서 /usr/bin/editor 이란 파일이 나왔습니다. ls 명령으로 확인을 해보니 level3는 setuid가 걸려있습니다. (-rws) editor를 실행시켜 보고 싶습니다. editor 파일을 실행해보고 hint에서 "텍스트 파일 편집중 쉘 명령어를 사용할 수 있다" 라고 했었습니다. id 명령을 통해서 권한을 확인해보겠습니다. (vi 편집 .. level1 login : level1 passwd: level1 level1에 접속 후 ls 명령어를 통해 홈 디렉터리 내용을 확인해 보았더니 hint라는 확인해보고 싶은 file 이 있습니다. hint를 확인해보면 "level2 권한에 SetUID가 걸린 파일을 찾는다" 입니다. SetUID가 걸린 파일은 파일 실행중 소유주 권한을 빌려오고, 실행이 끝난 후 다시 자신의 권한으로 돌아옵니다. 즉, level2 권한에 SetUID가 걸린 파일이 존재하고 있다는 뜻입니다. find 명령을 사용해서 SetUID가 걸린 파일을 찾아주도록 합니다. -perm과 -user 옵션의 도움을 받겠습니다. -perm은 setuid가 걸려있는 파일이므로 사용하고 (setuid가 걸린 파일권한은 4000번대에 표시) -user는 소유.. 이전 1 다음