HackerSchool FTZ Level 3 풀이


cat hint하면 소스 코드가 나온다.



#include 
#include 
#include 

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 );

}



more hint로

동시에 여러 명령어를 사용하려면?
문자열 형태로 명령어를 전달하려면?


소스코드를 보면 dig을 쓰는 프로그램이다. 먼저 dig이 뭔지 알아보자

dig (domain information groper) 는 DNS 네임서버에 쿼리를 날리기위한 유용한 툴이다.
DNS lookup 과 쿼리를 보낸 네임서버로부터 돌아오는 응답을 출력해준다.

대부분의 DNS 관리자들은 DNS장애 시 troubleshoot 를 위해 dig를 사용한다.
이유는 dig의 유연하고 편리하기 때문이다.

nslookup과 비슷한 역할을 하지만 nslookup보다 좀 더 상세한 정보가 포함돼 있다.

nslookup과 차이점은 @쿼리할 DNS 서버 IP 옵션을 명령어를 사용할 때 입력해야 한다.

최신 버전의 dig은 안해도 작동한다.

소스코드를 보면 먼저 인자가 1개인지 확인을 하고

cmd에 dig @을 넣고 그 뒤에 인자를 넣고 version.bind chaos txt가 들어간다.

만약 127.0.0.1을 넣는다고 하면

dig @127.0.0.1 version.bind chaos txt가 된다.

즉, 입력받은 문자열에 해당하는 dNS 서버에서 운영중인 BIND 프로그램의 버전을 확인하는 명령을 실행한다.

이는 해당 서버에서 취약한 버전이 운영 중인지 확인할 수 있는 유용한 명령어이지만 최근에는

버전 요청에 대해 회신하지 않도록 설정하고 있다.

아래는 dig과 nslookup 차이이다. 



/bin/autodig *****가 되야한다.

하지만 dig @123.456.754.123이 되고 뒤에 뭔가 명령어를 더 넣어야 한다.

"과 ;를 쓰면 한번에 보낼 수 있다.

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

셀에서 ";"는 명령어를 한줄에 연속해서 적을 때 이용할 수 있고 이것은 System()에도 동일하게 적용 된다.


+ Recent posts