_

먼저 ls 명령어로 hint가 있는지 찾았고
cat 명령어로 hint의 내용을 확인했다.
_
int main(int argc, char **argv)
argc는 main함수에 전달되는 인자의 갯수를 의미하고
**argv는 main함수에 전달되는 실제 정보를 의미한다.
포인터에 *이 다시 붙어있으므로 실제 문자열이 전달되는 것을 알 수 있었다.
cmd[100]
cmd 배열의 크기는 100으로 지정되어있다.
if(argc!=2)
전달되는 인자가 2개가 아닐 경우에 if문이 실행되고 exit (0) 종료시킨다.
strcpy( cmd, "dig @" );
strcat( cmd, argv[1] );
strcat( cmd, " version.bind chaos txt" );
strcpy는 문자열을 복사하는 함수이고,
strcat은 문자열을 합쳐서 이어붙이는 함수이다.
인자가 2개일 경우에 if문에 들어가지 않으므로 다음으로 넘어간다.
cmd 배열에 dig@ 문자열을 복사하고, cmd 배열의 마지막 문자(@) 뒤에 argv[1]의 내용을 이어붙인다.
위의 cmd 배열에 이어서 "version.bind chaos txt" 문자열을 덧붙인다.
system( cmd );
system함수로 cmd의 내용을 실행한다.
_
추가힌트 1) 동시에 여러 명령어를 사용하려면?
유닉스에서 동시에 명령어를 사용하려면 세미콜론으로 붙여쓰면 된다.

추가힌트 2) 문자열 형태로 명령어를 전달하려면?
문자열 형태로 명령어를 전달하려면 C프로그래밍에서 문자열을 사용하듯이 ""에 넣어주면 된다.

항상 사용했던 방법으로 setUID 권한을 가지고 유저가 level4인 파일을 찾았다.
오류가 나는 값은 null 디바이스로 넘겼더니
/bin/autodig 파일을 찾았다.

/bin 디렉토리로 이동했다.
bin 디렉토리에 있는 것으로 보아 명령어 처럼 쓰면 될 것 같다.
ls -al 명령어로 level4가 소유자임을 알 수 있었다.

autodig만 입력하면 host를 입력하라고 나온다.

local을 host로 입력했더니 모른다고 나와서
localhost를 입력했더니 명령이 진행되는 것을 알 수 있었다.
dig@ 뒤에 localhost가 그 뒤에 version.bind chaos txt가 붙었다.

두개 명령어를 붙여서 실행하기 위해 세미콜론을 사용했고
localhost 뒤에 패스워드를 얻기 위해 사용하는 my-pass를 붙였더니
level4의 패스워드를 얻을 수 있었다.
_

먼저 ls 명령어로 hint가 있는지 찾았고
cat 명령어로 hint의 내용을 확인했다.
_
int main(int argc, char **argv)
argc는 main함수에 전달되는 인자의 갯수를 의미하고
**argv는 main함수에 전달되는 실제 정보를 의미한다.
포인터에 *이 다시 붙어있으므로 실제 문자열이 전달되는 것을 알 수 있었다.
cmd[100]
cmd 배열의 크기는 100으로 지정되어있다.
if(argc!=2)
전달되는 인자가 2개가 아닐 경우에 if문이 실행되고 exit (0) 종료시킨다.
strcpy( cmd, "dig @" );
strcat( cmd, argv[1] );
strcat( cmd, " version.bind chaos txt" );
strcpy는 문자열을 복사하는 함수이고,
strcat은 문자열을 합쳐서 이어붙이는 함수이다.
인자가 2개일 경우에 if문에 들어가지 않으므로 다음으로 넘어간다.
cmd 배열에 dig@ 문자열을 복사하고, cmd 배열의 마지막 문자(@) 뒤에 argv[1]의 내용을 이어붙인다.
위의 cmd 배열에 이어서 "version.bind chaos txt" 문자열을 덧붙인다.
system( cmd );
system함수로 cmd의 내용을 실행한다.
_
추가힌트 1) 동시에 여러 명령어를 사용하려면?
유닉스에서 동시에 명령어를 사용하려면 세미콜론으로 붙여쓰면 된다.

추가힌트 2) 문자열 형태로 명령어를 전달하려면?
문자열 형태로 명령어를 전달하려면 C프로그래밍에서 문자열을 사용하듯이 ""에 넣어주면 된다.

항상 사용했던 방법으로 setUID 권한을 가지고 유저가 level4인 파일을 찾았다.
오류가 나는 값은 null 디바이스로 넘겼더니
/bin/autodig 파일을 찾았다.

/bin 디렉토리로 이동했다.
bin 디렉토리에 있는 것으로 보아 명령어 처럼 쓰면 될 것 같다.
ls -al 명령어로 level4가 소유자임을 알 수 있었다.

autodig만 입력하면 host를 입력하라고 나온다.

local을 host로 입력했더니 모른다고 나와서
localhost를 입력했더니 명령이 진행되는 것을 알 수 있었다.
dig@ 뒤에 localhost가 그 뒤에 version.bind chaos txt가 붙었다.

두개 명령어를 붙여서 실행하기 위해 세미콜론을 사용했고
localhost 뒤에 패스워드를 얻기 위해 사용하는 my-pass를 붙였더니
level4의 패스워드를 얻을 수 있었다.