프로그래밍

 3198, 1/160 회원가입  로그인  
   rocket07
   http://--
   C언어, 리눅스, ftz레벨3 복합질문입니다ㅎ[정답있으니 아직 안푸신 분은 보지마셔요~]

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3289 [복사]


ftz 레벨3 에 autodig 소스를 보면

strcpy(cmd, "dig @");
strcat(cmd, argv[1]);
strcat(cmd, "version.bind chaos txt");

system(cmd);

이렇게 되어있잖아요~  여기서 레벨4의 비밀번호를 얻을려면 , 현재 bin 디렉토리에 있다고 치면

autodig "/bin/bash; my-pass" 처야 하잖아요.  근데 이렇게 입력하고 만약 cmd를 printf 함수로 출력한다면

printf("dig @ %s version.bind chaos txt", *argv[1]);    랑 똑같은거 아닌가요? 여기서 제가 궁금한게

dig @ 이거뒤엔 무슨 호스트 주소? 이런게 들어가야 하는데 autodig  해노코 argv[1] 의 포인로 "/bin/bash;my-

pass" 명령어가 바로 사용될 수 있느냐는거에요ㅜ  으아아아 잠이와서 그런지 이상한 헛소리 하고있는것 같기도

하고ㅜㅜ  

진짜로 제가 질문할 걸 여기다가 적을게요.

1. autodig "/bin/bash; my-pass"를 입력한다면 autodig에 명령문자열이 /bin/bash; my-pass가 전달되는건데

   제가 생각하기로는 결국 cmd 내용이 dig @ /bin/bash; my-pass 이렇게 될텐데 왜 오류나, command not

  found  이런게 안뜨냐는 거에요

2. 또 궁금한게 autodig "/bin/bash" 이렇게 입력하면 왜 dig 에 관한 오류가 뜨는걸까요? '/bin/bash'라는 서버

   Name을 찾을 수 없다  라는군요  왜 위에 my-pass 명령까지 치면 레벨4의 비밀번호가 나오고 /bin/bash만

   치면 오류가 뜨는건가요?


  Hit : 4036     Date : 2012/01/22 03:30



    
rocket07 중간중간에 글 의미 이해하기 힘든부분도 있네요ㅜ 역시 사람은 잠을자야 .. 2012/01/22  
BrokenPipe 의문점이 있어서 그런데요
/bin/autodig "/bin/bash; my-pass" --- 이렇게 입력하신건가요?
/bin/autodig "/bin/bash; my-pass;"--- 아니면 이렇게 입력하신건가요?
2012/01/22  
rocket07 두개 다 될걸요? 제 질문 답변좀ㅋ 2012/01/23  
BrokenPipe 두개 다 될수가 없어서 여쭤본거에요
전자로 하게되면 최종 문자열이
dig @/bin/bash;my-passversion.bind chaos txt
이런식으로 my-pass 와 version 이 붙게되어 명령이 제대로 작동을안해요
우선 가능한 답부터 알려드리자면
/bin/autodig ";/bin/bash;"
/bin/autodig ";my-pass;"
/bin/autodig ";/bin/bash;my-pass;"
세번째건 사실 필요없는데 작성자님이 저런식으로 쓰셨길래 붙여봤는데요
첫번째걸로 하면
dig @;/bin/bash;version.bind chaos txt
이렇게 /bin/bash가 분리되서 /bin/bash가 실행이 됩니다
my-pass도 같은방식으로 동작하는거구요
세번째 방식대로 하면 /bin/bash 가 실행되서 쉘이 새로 만들어지고
그 쉘에서 나오게 되면 my-pass 명령어가 실행됩니다
이 문제를 푸는 가장 이상적인 방법은 두번째가 되겠네요
2012/01/23  
rocket07 아! 그렇구나 ㅎㅎ
저기 또 궁금한게 있는데여, 레벨1에서 2넘어갈땐 레벨2의 권한으로 /bin/bash 실행하면 레벨2의

권한을 획득하게 되잖아요. 근데 autodig 도 setuid 걸려있는데 /bin/autodg "/bin/bash;" 이렇게

해도 왜 레벨4의 권한이 획득안되는건가요?
2012/01/24  
rocket07 broken님 /bin/bautodig "my-pass;" 해도 안되네요; 그리구 /bin/autodig "/bin/bash;my-pass" 이거

되네요ㅎ;
2012/01/24