|
http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3966 [복사]
다음 코드는 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.
- 동시에 여러 명령어를 사용하려면?
- 문자열 형태로 명령어를 전달하려면?
이 힌트를 보고 페스워드를 얻어내는 문제였는데요.
만약 예로 autodig "/bin/bash"라고 입력해서 실행하게 되면
"dig @/bin/bash version.bind chaos txt"라는 문자열이 cmd로 입력되게 될탠데
풀이들을 보니까 몇몇 분들은 "/bin/bash;my-pass"라는 방법으로 푸셨더라고요... (저는 "|my-pass"라고 풀었는데 말입니다.)
그런데 이렇게 되면 dig명령어의 옵션으로 @/bin/bash라는 값이 들어가는게 아닌가요?
그러니까 앞의 dig명령어와 구분시켜주기 위해서 "|/bin/bash"나 ";/bin/bash"같은 형식으로 명렁어가 들어가야 되는게 아닌가요?
왜 구분 없이 바로 /bin/bash라고 입력해도 되는건지 궁금합니다. |
Hit : 3815 Date : 2011/05/01 10:00
|