System/FTZ

[FTZ school] level 3

BadSchool 2017. 5. 20. 00:01

▲level3의 hint를 읽은 결과. 보기쉽게 밑에 다시썼다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
//다음 코드는 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.
//- 동시에 여러 명령어를 사용하려면?
//- 문자열 형태로 명령어를 전달하려면?
 
cs

▲소스코드를 보자면 인자값을 받아 dig @+인자값+ version.bind choas txt를 system함수로 실행시킨다.

즉, 인자값 부분에 쉘을 실행시키는 명령어가 들어가야 할 것으로 보여진다.
힌트를 보자면 동시에 여러 명령어를 사용하려면? 이 있는데 방법은 세미콜론(;)을 사용한다.

문자열 형태로 명령어를 전달하려면? 대표적인 방법으로 perl 스크립트가 있다.


▲일단 find 명령어로 autodig파일을 찾아내었다.


▲익스플로잇을 위해 perl 스크립트를 사용하였다.

간단하게 보자면 perl로 ;/bin/sh;라는 명령을 문자열로 인자값에 보냈다. ;은 명령어를

끝마칠 때 쓰는 것이므로 컴퓨터는

/bin/autodig ;/bin/sh; version.bind choas txt 로 알아듣게 된다.

즉 세개의 부분이 별개로 작용되어 /bin/sh명령이 실행되고 level4의 권한을 얻어 my-pass로

패스워드를 알아낼 수 있다.


댓글수0