본문 바로가기
Hack/ftz

ftz 풀이 level3

by Choraengyi 2016. 11. 21.

 ftz level3 를 해보겠습니다.


힌트를 조회해 보니, C언어 코드가 나오면서 이를 이용해 level4의 권한을 얻으라고 나와있습니다.


추가 힌트로, 동시에 여러명령사용과 문자열형태로  명령어를 전달하라는 힌트가 있습니다.



우선 C 코드를 분석해 보겠습니다.


#include <stdio.h>                        //표준 입출력 라이브러리

#include <stdlib.h>                       //문자열 변환, 유사난수 생성 등의 함수를 포함한 표준 라이브러리

#include <unistd.h>                      //POSIX 운영체제 API에 대한 엑세스를 제공하는 헤더파일


int main(int argc, char **argv){        //인자를 받음, argc=명령행 갯수, argv=명령행 문자열

    char cmd[100];                        //cmd라는 배열을 선언 char형으로 100개의 문자

    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 배열에 해당 문자열 입력

    strcat( cmd, argv[1] );                              //문자열 붙이는 함수, cmd배열에 문자열 이어붙임

    strcat( cmd, " version.bind chaos txt");        //cmd배열에 문자열 이어붙임

    system( cmd );                                        //cmd 실행

}


이러한 코드입니다. 다음 파일을 한번 보겠습니다.


autodig를 찾아서 ls로 조회결과 setuid가 설정된것을 알 수 있습니다.



이를 통해서 autodig 에 인자를 2개 넘겨주어서 level4 권한 획득이 가능함을 짐작할 수 있습니다.


먼저 리눅스에서 명령어 2개를 넘기기 위해 세미콜론(;)을 사용합니다. 세미콜론을 사용하여


전달하였는데 level3 의 패스워드가 나옵니다..  뭐가 문제일까 보니 위에 문자열로 전달하라는


힌트가 하나 더 있었습니다.



 문자열로 전달하는 방법을 생각해보니 쌍따옴표("")가 있었습니다. 쌍따옴표를 사용해 다시 


해보겠습니다.



문자열로 전달하니 실행이 됨을 알 수 있습니다. 


ftz level3 를 풀어봤습니다.




728x90
반응형

'Hack > ftz' 카테고리의 다른 글

ftz 풀이 level6  (0) 2016.11.28
ftz 풀이 level5  (0) 2016.11.27
ftz 풀이 level4  (0) 2016.11.23
ftz 풀이 level2  (0) 2016.11.19
ftz 풀이 level1  (0) 2016.11.18

댓글