FTZ level3

2022. 2. 22. 22:31Site/FTZ


이번시간에는 level3에 대하여 풀어보겠습니다

공부를 하는 입장이니 틀린게 있어도 양해부탁드리겠습니다


 

기존 레벨과 동일하게 hint파일을 확인하고 파일의 정보를 확인해 보았습니다

파일을 열어보니 처음으로 c언어 소스파일이 등장했습니다

 

해석을 해보겠습니다

int main(int argc, char **argv){  //main함수 2개의 인자를 받음

    char cmd[100]; //char형cmd에 100byte의 공간을 할당함

    if( argc!=2 ){ argc값이 2가 아니면 밑에 문구를 출력함
        printf( "Auto Digger Version 0.9\n" );
        printf( "Usage : %s host\n", argv[0] );
        exit(0);
    }
// argc값이 2라면
    strcpy( cmd, "dig @" ); //"dig @"를 cmd에 넣음
    strcat( cmd, argv[1] ); //argv[1]의 값을 cmd에 이어서 붙임
    strcat( cmd, "version.bind chaos txt"); //"version.bind chaos txt"를 cmd에 이어서 붙임

    system( cmd ); //cmd실행함

}
*

agrc : 전달된 인자의 개수를 의미합니다

agvc : 전달된 인자의 내용을 의미합니다

strcpy : stringcopy의 약어로 strcpy(복사할문자위치, 복사할문자)입니다. 위 경우에는 "dig @"를 배열cmd에 복사를 해준다는 의미입니다

strcat : string concatenated의 약어로 문자를 이어붙여준다는 의미입니다. 위 경우에는  strcat함수가  2번 나왔기 때문에 "dig @" + argv[1] + "version.bind.chaos txt"가 되겠습니다

*

힌트의 파일을 찾기위해 find명령을 사용하여 들어가 보니 /bin/autodig라는 파일을 발견하였습니다

autodig파일을 실행시켜 보니 아까 소스코드에서 보았던 문구가 출력되었습니다

argc!=2 : 인자 2개를 전달하지 않아서 그런것 같은데 인자2개를 만들기위해 아무 값이나 추가하여 실행시켜보니

원하는 출력값이 나오지않게되었습니다

위의 힌트파일에는 2개의 힌트가 있었습니다

리눅스에서 동시에 명령어을 사용하려면 ; 을 써주시면되고

문자열 형태로 명령어를 사용하려면 ""안에다가 명령어를 써주시면 됩니다

 

힌트를 조합하여 해결해야되니 bash쉘과 my-pass명령어를 힌트를 이용하여 명령해보면

./autodig "/bin/bash;my-pass"라고 입력해줍니다

다음시간에는 level4에 대해서 풀어보겠습니다

'Site > FTZ' 카테고리의 다른 글

FTZ level5  (0) 2022.02.24
FTZ level4  (0) 2022.02.23
FTZ level2  (0) 2022.02.21
FTZ level1  (0) 2022.02.21
FTZ Trainer10  (0) 2022.02.20