HackThisSite Realistic :: Peace Poetry: HACKED

올린사람 : PeacePoetry
메시지 : 저는 사람들이 읽을 수 있고 평화와 관련된 시를 제출할수 있는 웹 사이트를 운영합니다. 전 이것을 선의의 목적으로 다른 사람들에게 제공하고 적을 만든 이유가 없다고 생각하는데, 어떤 XXX가 내 웹사이트를 해킹해서 첫 페이지에 공격적인 홍보를 하고 있어요. 여길 해킹해서 되돌려 주실수 있으세요? 부탁입니다. 아, 그리고 누가 이런 짓을 했는지도 메시지로 알려주세요!
제 웹사이트를 여기에서 찾을 수 있습니다.
이 문제는 어떻게 접근하냐에 따라 쉬울 수도 어려울 수도 있습니다. 아래 힌트를 참고하여 신중히 접근 해보세요.
- 언제나 말하지만, 웹 해킹의 기초는 html 소스부터…
- 이 웹사이트에는 어떤 기능이 구현되었을까?
- php 에 대한 약간의 지식 (?)
- Directory Traversal
전에도 언급했지만, 문제를 보자마자 바로 풀이를 보지 마세요. 고민하면서 풀다 보면 은근히 재미있습니다. ^^;
여기서부터는 풀이입니다.
지난 번과 마찬가지로 html 소스를 확인하면 제일 아래에 주석이 하나 있습니다.<!–Note to the webmasterThis website has been hacked, but not totally destroyed. The old website is still up. I simply copied the old index.html file to oldindex.html and remade this one. Sorry about the inconvenience.–>
해커가 원래의 페이지를 oldindex.html 로 옮겼다고 메시지를 남겼네요. 그래도 제법 친절한 녀석인듯?

해커가 알려준대로 찾아가면 위 그림과 같은 웹페이지가 나옵니다. Peace Poetry. 아마 이 페지이가 원래의 페이지가 맞겠지요? 우리의 목적은 이 페이지를 제자리로 돌려놓는 겁니다. 즉, oldindex.html 이 아니라 index.html 로 바꾸어야 하지요. 지금 우리에게는 이 웹사이트에 대해 어떠한 권한도 없는 상황입니다. 그렇다고 권한을 얻을 방법이 있냐하면 그것도 아니네요. 어디에도 로그인이나 가입할 경로가 안 보이니까요.
방법을 찾아야 합니다. 대충 훝어보니 이 웹사이트에는 원래 2개의 기능이 구현되어 있었나 봅니다. Read The Poetry. 시편을 읽을 수 있나 봅니다. 따라 들어가보면 시편 목록이 나오구요. 목록에서 하나를 선택하면 시편이 나옵니다. 이 때 url 주소를 확인해 보면,
http://www.hackthissite.org/missions/realistic/3/readpoem.php?name=Hacker
이렇게 되어 있죠. readpoem.php 파일을 이용하여 어떤 DB나 파일을 읽는 것 같습니다.
두 번째로, Submit Poetry. 이것은 친절하게 설명되어 있군요. 시편을 등록하면 어딘가에 바로 저장되고 자신이 확인한 후 아까의 그 목록에 반영한다고 합니다. 그리고 아래 쪽에 시편의 제목과 내용을 입력할 수 있는 공간이 있습니다.
여기에 SQL Injection을 시도해봐도 성과가 없습니다. 만약 예외처리를 했다고 가정하면 어떤 메시지라도 나올텐데… DB를 이용하는 게 아닌 것 같습니다. 그렇다면 남은 것은 파일로 저장할 거라는 가정이군요. 여기에서 파일로 저장되면 아까 시편을 읽을 때 그 파일을 불러오는 방식일 겁니다.
그렇다면, oldindex.html 의 소스 모두를 index.html 이라는 제목으로 등록하면 어떨까요? 여기서부터는 Directory Traversal 입니다. 몇 번 찔러넣다 보면 문제를 풀었다는 메시지를 볼 수 있을 겁니다.