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 를 풀어봤습니다.
'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 |
댓글