리눅스/FTZ

level3

mewonsv 2020. 10. 5. 00:20

우선 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 명령을 사용)