Systemhacking/FTZ

[FTZ] level3

レ(゚∀゚;)ヘ=З=З=З 2021. 3. 25. 19:30
728x90

level 3

(비밀번호 : can you fly?)

이번에도 level3 문제에 대해 알기 위해  ' ls ' -> ' cat hint ' 로 hint 파일의 내용을 보았다.

hint 파일을 보면 두 가지 정보가 나온다.

 

첫 번째, autodig 의 소스 코드가 나온다. 

autodig은 사용자의 입력을 받아 인자가 2개가 아니면 오류를 출력한다. ( argc != 2 )

' strcpy ' 를 사용해 " dig @ " 를 cmd로 복사하고, 나머지 인자들을 ' strcat ' 를 사용해 이어붙인다. ( strcat ( cmd, argv[1] ) )

' strcat ' 를 사용해 마지막에 " version.bind chaos txt " 를 이어붙인다.

' system() ' 명령어를 사용하여 cmd 를 실행한다.

 

더보기

 

strcpy() 함수

헤더 파일 : <string.h> ( C++에서는 <cstring> )

함수 이름 : str ( =string ) + cpy ( copy ) = 문자열을 복사하는 함수

 

strcat() 함수

헤더 파일 : <stinrg.h> ( C++에서는 <cstring> )

함수 원형 : char* strcat(char* dest, const char* origin);

dest 문자열 끝에 있는 '\0'가 사라지고 그 위치에 origin이 이어지는 함수, 즉 문자열을 이어주는 함수

 

 

두 번째, 문제인 level4의 권한을 얻으라는 문구와 more hints 가 나왔다.

동시에 여러 명령어를 사용하려면 ' ; ' ( 세미콜론 ) 을 이용하면 되고, 문자열 형태로 명령어를 전달하려면 " " 또는 ' ' 를 사용하면 된다.

autodig 파일을 이용하여 level4의 권한을 얻는 것이므로 먼저 autodig 파일의 위치를 찾아보았다.

 

find 명령어를 통해 autodig이라는 이름의 파일을 찾아보았다너 ' /bin/autodig ' 인 것을 확인할 수 있었다.

 

system() 을 이용해서 공격을 해보았다. ' /bin/autodig ' 뒤에 쉘을 열어 my-pass를 얻는 명령을 써주었다. 

여기서 " " 을 사용하지 않고 ' /bin/autodig /bin/bash ; my-pass ' 로 작성하면 ' /bin/autodig /bin/bash ' 만 system() 로 전달이 되고 my-pass는 cmd에서 실행된다.

하나의 문자열로 만들어 주기 위해 " " 를 사용하여 ' /bin/autodig "/bin/bash ; my-pass" ' 로 작성한다.

성공하면 my-pass 에 해당하는 값인 "suck my brain"을 얻을 수 있다.

'Systemhacking > FTZ' 카테고리의 다른 글

[FTZ] level5  (0) 2021.03.30
[FTZ] level4  (0) 2021.03.30
[FTZ] level2  (0) 2021.03.25
[FTZ] level 1  (0) 2021.03.25
[FTZ] trainer6 ~ trainer10  (0) 2021.03.25