본문 바로가기

Hacking

[Wargame.kr] 6. DB is really GOOD 500점에 해당하는 웹 문제이다. 이 문제의 경우에는 힌트에서도 나와 있듯이 user name과 database 사이의 관계를 알아내어야 한다. 그리고 문제에서 What kind of this Database라고 했으므로 보통의 페이지에서 쉽게 알아볼 수 있는 Mysql의 데이터베이스가 아니라는 것을 추측할 수 있다. 문제 링크 문제 사이트에 접속하면 아래와 같은 내용을 볼 수 있다. 일단 User name을 입력할 수 있는 Inputbox가 존재한다. 혹시 해당하는 사이트의 소스코드가 존재하는지 알아보기 위해서 index.phps로 접속해 보았지만 안 되는 것으로 보아 추측을 통해서 문제를 해결해야 한다는 결론을 얻었다. 일단 가장 먼저 user name으로 의심스러운 것이 admin이었으므로 admi..
[Wargame.kr] 5. WTF_CODE 450점에 해당하는 문제이다.이 문제의 경우에는 약간 특별한 언어로 작성된 것으로 이 언어가 무엇인지 알아내는 부분과 이 언어를 컴파일해서 실행 결과를 얻어내는 부분으로 나눌 수 있다. 문제 링크 문제 사이트에 접속하면 아래와 같은 내용을 볼 수 있다. 일단 source_code.ws라는 다운로드 링크가 있으므로 이것을 이용해서 소스코드를 다운로드 받는다. 그래서 다운로드 받는 파일을 Sublime Text로 열어보니 아무 글자도 써저 있지 않고 그냥 스페이스바, 탭, 엔터로만 이루어진 파일이라는 것을 확인할 수 있었다. 그래서 이와 같은 언어는 특별하게 접한 적이 없어서 "Program language exists only whitespace"라는 검색어로 구글에 검색하니 이 언어가 Whitespace..
[Wargame.kr] 4. login filtering 450점에 해당하는 Web 문제이다. 이 문제의 경우에는 Mysql과 PHP 사이의 차이에 대해서 알고 있는지 여부를 묻는 문제와 같다. 문제 링크 문제 사이트에 접속하면 아래와 같은 로그인 창을 볼 수 있다. 즉 알맞은 ID와 PW를 입력해야지 로그인이 될 수 있다는 것을 알 수 있다. 로그인 버튼 아래에 get source 링크가 있으므로 그 링크로 들어가면 이 페이지를 만드는데 사용한 소스코드를 볼 수 있다. 소스코드를 보면 아래 사진과 같다. 소스 코드의 맨 마지막에서 볼 수 있듯이 blueh4g / blueh4g1234ps가 이 데이터베이스에 들어있는 데이터라는 것을 알 수 있다. 그러나 PHP부분 중 if($id=='guest' || $id=='blueh4g') 에서 이 계정을 필터링한다는 것..
[Wargame.kr] 3. flee button 450점에 해당하는 Web 문제이다. 난이도의 경우에도 이전의 두 문제와 거의 비슷한 난이도이다. 여기서는 Javascript와 HTML에 대한 기초적인 지식만 있으면 풀 수 있는 문제이다. 문제 링크 문제 사이트에 접속하면 아래와 같이 메시지 박스와 버튼이 뜨는 것을 볼 수 있다. 메시지 박스의 내용을 대충 해석하면, 버튼을 누르면 인증키를 얻을 수 있다는 의미이다. 그래서 버튼을 클릭하기 위해서 마우스를 버튼쪽으로 가져가니 버튼이 마우스로부터 계속 멀어지는 것을 확인할 수 있었다. 즉 이것을 통해 Javascript를 이용해서 버튼과 마우스 사이의 거리를 측정한 다음 어느 거리 이하가 되었을 때 마우스로부터 멀어지도록 하는 함수가 구현되어 있다고 추측이 가능하다. 문제에서 버튼을 누리기만 하면 된다고..
[Wargame.kr] 2. QR CODE PUZZLE 300점에 해당하는 Web 문제이다.이 문제의 경우에도 1번과 마찬가지로 매우 쉬운 문제라고 볼 수 있다. 문제 링크 문제 사이트에 접속하면 아래와 같은 6X6 퍼즐을 볼 수 있다. 그리고 퍼즐의 조각을 누르게 되면, 퍼즐이 움직이는 것을 확인할 수 있다. QR code의 경우에는 중간에 누락된 부분이 없이 정사각형으로 모든 데이터가 존재해야만 인식이 가능하다. 그렇기 때문에 이 퍼즐을 다 맞춘다고 하더라도 인식이 불가능하다는 것을 의미한다. 그렇기 때문에 퍼즐을 다 맞추고 나면, 원본 이미지를 가져오는 부분이 존재를 해야한다. 그래서 이 원본 QR code 이미지를 가져오는 부분이 있는지 확인하기 위해서 Chrome의 개발자도구에서 Network탭으로 가서 확인을 해보았다. 마지막 부분을 보면 qr.p..
[Wargame.kr] 1. already got 200점에 해당하는 Web 문제이다.이 사이트에서 가장 낮은 배점을 가지고 있는 만큼 상당히 쉬운 난이도를 가지고 있는 문제이다. 문제 링크 문제 사이트에 접속하면 'you've already got key! :p'라는 메시지를 볼 수 있다. 이미 키에 해당하는 값을 가지고 있다고 하는데, 사이트에서는 표시가 되지 않는다. 혹시 주석으로 key를 써놓았는지 여부를 확인하기 위해서 사이트의 소스보기를 하더라도 주석이 하나도 없는 것을 확인할 수 있다. 여기에도 주석이 없기 때문에 그다음으로 생각할 수 있는 것이 헤더부분에서 key값을 전송해주는 것이 아닌가라는 생각을 할 수 있다. 그래서 크롬의 개발자도구에서 Network 항목을 보았더니 다음 아래와 같은 사진의 형태로 볼 수 있었다. 여기서 Reques..
[Wargame.kr] 0. 로그인 스크립트 Wargame.kr에 있는 Web문제를 풀 때, Python을 이용해서 해결하는 편이다. 따라서 문제를 풀어서 인증키를 얻어내야하는데, 이 인증키는 접속 ip와 접속자 id에 따라서 바뀐다는 말이 써져 있기 때문에, 문제를 해결할 때 쿠키값을 입력받아서 같이 전송을 해줄 필요가 있다. 쿠키값을 얻는 가장 간단한 방법은 브라우저에서 직접 얻어오는 방법도 있지만, 이 사이트가 CodeIgniter 2로 개발이 되어서 쿠키 값이 매우 더럽다.(쿠키를 사용자와 관련된 데이터 전부를 json형태로 저장한다.) 그래서 이것을 한 두번 정도는 직접 복사 붙여넣기를 할 수 있는데, 이 행동을 매 번 문제를 풀 때마다 해야하기 때문에, 단순히 아이디와 패스워드만 입력하는 방법으로 하면, 매번 쿠키값이 달라지는 것에 대해..
지뢰찾기 리버싱 (0) 아마 지뢰찾기에 대해 들어보지 않은 사람은 찾기 어려울 것이다. 내가 처음으로 사용했었던 운영체제인 Windows XP부터 시작해서 Windows 7까지 기본으로 들어가 있는 게임이었다. 안타깝게도 Windows 8.1부터는 기본적으로 제공해주는 것이 아니라 X box 앱을 통해서 설치를 해야 지뢰찾기 게임을 할 수 있었다. 이처럼 지뢰찾기 게임이 정말 오래된 게임이기 때문에 많은 사람들이 이 게임을 리버싱을 했으며, 그만큼 구조가 단순할 것이라고 생각해서 이 프로젝트를 시작했다. 내가 현재 사용하는 컴퓨터의 운영체제가 Windows 8.1이어서 Windows 7에 깔려 있는 지뢰찾기를 구해서 실행해보았으나 작동을 하지 않아서, 결국 Windows XP에 깔려 있는 지뢰찾기를 구해서 리버싱을 시작하였다...