강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

6. 레벨 5를 향하여

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

icon01.giftitle05.gif

제 여려분은 기초 적인 명령어나 리눅스의 사용법에 대해서 어느 정도 익숙해져 있을 것이다. 그러나 이 사이트에서 나오는 것이 전부는 아니다. 나름대로 책을 구입해서 연구하고 공부하기 바란다.

icon04.gif5. level4 문제 풀이
######### # 문제 # #########
리눅스에 들어 있는 게임을 종종 즐기곤 하는 김모씨는 하도 심심하여 게임의 소스 파일에 특정 코드를 삽입하여 다시 컴파일 하였다. 김모씨가 왜 그랬는지 이해하는 사람은 아무도 없다. 아무튼 여러분은 김모씨의 어리석은 행위를 이해할 필요는 없고, 이를 이용하여 다음 레벨을 획득하면 된다. Hint - 어줍잖은 김모씨는 단 한 줄만 소스에 추가했다고 한다. 해커즈랩에 텔넷이나 데이터맨 프로그램으로 접속한다. login:level4 passwd:xxxxxxxx 유닉스계열의 서버는 대소문자의 구분을 확실하게 한다. [level4@drill level4]$ id uid=2004(level4) gid=2004(level4) groups=2004(level4), 9999(hackerzone) [level4@drill level4]$ whoami level4 김모씨의 게임 소스파일을 찾는다. 물론 set uid버그가 존재하는 파일일 것이다. [level4@drill level4]$find / -user level5 -group level4 -perm -4000 -print /usr/games/trjka 실행을 해보자. [level4@drill level4]$ /usr/games/trojka # # # # # # -score- # ||||||| # 70 # # # # # # -speed- # # 9 # # # # <--현재 여러분의 레벨은 level5입니다. # # # XXXXXXX # # %%%%%%% # # /////// # # $$$$$$$ # ###################### 허거덩!!! 테트리스 게임이 실행 된다니....... 증말루 증말루 우짜냐 쓰꺼나 잉?? 문제로 돌아가 보는 수 밖에 없을 것 같다. 김모씨가 게임 소스에 특정 코드를 삽입하여 다시 컴파일 했다고 했다. 그렇다면 게임의 소스안에 특정한 명령을 실행하는 명령어가 들어 있다는 이야기가 되나?? 그럼 일단은 게임소스를 찾아서 열어볼 수 밖에 없을 것 같다. 그러나 컴파일된 실행파일만 보일 뿐 게임소스는 없는 것 같다. [level4@drill trojka]$vi ./trojka 잔뜩 욕만 해대면서 놀리는 것 같다(-.-;;) 그러나 눈치만 좀 빠르신 분들은 게임을 실행시키면서 뭔가를 캐치했을 수도 있겠다. 무언가가 있다. 가장 눈에 두드러지는 것... 그렇다 2번 내지는 3번에 걸쳐서 화면이 깨끗하게 지워진다. 이건가??? (무언가 개연성이 있어 보이는 것은 전부 추적한다.) 화면을 깨끗이 지우는 도스 명령어는 clear이다. 그런 파일이 존재하는지 찾아 본다. [level4@drill level4]$ find / -name clear > /tmp/clear 해석)여러분들이 find명령을 치시면 너무 많은 파일들이 쭈욱 지나가서 확인하기가 어렵죠?? 그래서 제 나름대로 이 방법을 써 본 겁니다. 즉 clear라는 파일명을 가진 파일을 찾아서 /tmp/clear라는 파일에 넣어둬라(>)는 뜻입니다. 그리고서 /tmp/clear만 확인해 보면 되겠죠 [level4@drill level4]$ vi /tmp/clear /usr/bin/clear 오호!! 화면을 지우는 명령어가 /usr/bin 하위에 존재를 한다. 그렇다면 level3의 문제를 풀 때와 다소 비슷한 상황이 연출되네요 clear가 PATH에 잡혀 있는지 확인해 봅니다. [level4@drill level4]$set | less *생략* PATH=/usr/local/bin:/bin:/usr/bin:/usr/x11R6/bin PATH에도 잡혀 있네요. 앞장보다 오히려 더 쉬운 문제가 되겠네요 (요 clear가 들어있다는 것을 유추하는 것만 빼고) 왜냐하면 앞장에서는 date 커맨드를 이용하여 프로그램을 작성했지만 여기서는 특정 소스를 삽입하여 다시 컴파일 했기 때문이다. 그렇다면 앞장처럼 clear라는 파일에 /bin/pass라는 내용을 담은 쉘스크립트를 만들고 PATH를 clear이라는 쉘스크립트가 위치한 곳으로 바꿔 주면 trojka가 실행 되면서 여러분들은 level5의 권한을 갖게 되고 그 때 clear이라는 명령을 호출하는 데 위치는 바뀌어진 PATH에 걸려 있는 clear파일일 것이다. 그리고 그 안의 내용은.......... 하하하!!! 축하한다. 다음 레벨로 진입하자. 물고기를 잡아주기 보다는 물고기를 잡는 법을 알려 주는 방식을 택하겠습니다. 이번 레벨은 전 레벨과 크게 다를 것이 없고 여러분의 내공도 이 정도의 문제는 풀 수 있을 만큼 상승되어 있다고 판단되기 때문입니다.

===================================================================================================

이 사이트에서 제공하고 있는 내용은 개인의 경험을 바탕으로 제공되고 있습니다.
그러므로 이용시 예기치 않은 오류가 발생할 수도 있음을 알려드립니다.
여러분이 도움 및 정보를 바라신다면 저에게 메일을 보내 주십시요. 감사합니다.

www.dacker.wo.to copyleft (c) 2000 by park byoung-seo all lefts reserved

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,074 명
  • 현재 강좌수 :  35,995 개
  • 현재 접속자 :  530 명