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]를 붙여줍니다.
system(cmd); // system()함수는 시스템 명령을 수행하는 함수입니다. 즉 cmd라는 배열을 실행합니다.
more hints는 밑에서 살펴보도록 하겠습니다.
level1 과 level2 에서처럼 setuid가 지정된 파일을 찾아보니 autodig 라는 파일을 찾았습니다.
autodig 파일을 실행.
이제 more hint를 분석 해보겠습니다. (구글을 참조했습니다.)
1. 동시에 여러 명령어를 사용하려면?
-> ;(세미콜론)을 사용하면 명령어를 동시에 사용 가능합니다. ex) 명령어;명령어
2. 문자열 형태로 명령어를 전달하려면?
-> " " (큰따옴표=더블쿼터) 를 사용하면 명령어를 전달 할 수 있습니다.
위에 있던 chaos.txt를 앞서 ;(세미콜론)을 사용하여 my-pass 명령을 실행해 보았더니 level3의 비밀번호가 나왔습니다.
즉 autodig가 모두 실행되고 끝난 뒤 my-pass가 실행되어 password가 출력되는 것입니다.
autodig 파일 실행과 동시에 bash쉘과 my-pass명령을 동시 실행 시키려면
autodig "bash;my-pass" 형태로 실행을 시키면 문제를 해결할 수 있습니다. (/bin/bash에서 my-pass 명령을 사용)