zj3t

email: euntaejang@gmail.com

Latest Posts

FTZ-level3

By 오후 4:50 ,

이번문제는 약간 고민했었습니다. 빠른 시간내에 푼 것도 아니였습니다.


#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만 인식하게 되기 때문이다. 

You Might Also Like

0 개의 댓글