본문 바로가기

Hacking/- Wargame.kr

[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이었으므로 admin으로 Login을 해보았으나 아래와 같이 alert 창을 띄우고 접속이 되지 않았다.



그래서 user name에서 admin을 필터링한다는 사실과 우리는 admin이라는 계정에 해당하는 데이터를 얻어내면 성공이라는 것을 유추할 수 있었다. 일단 다른 아이디로는 접근이 가능한지 확인해보기 위해서 내 닉네임인 humit으로 로그인을 해보았더니 아래처럼 잘 접속이 되었다.



처음에는 위 텍스트 박스를 통해서 sql injection을 통해서 알아내기 위해 몇 가지 방법으로 시도를 해보았으나 작동이 되지 않아서 그냥 포기했다. 그러다가 user name과 database 사이의 관계를 힌트로 준 것을 생각하고 다른 user name으로 로그인을 시도해보았다. 에러가 발생할 수도 있을 것 같은 몇 가지 특수문자를 이용해서 로그인을 시도해보았는데, 그 중에서 /가 아래와 같은 에러를 발생시켰다.



여기에 나온 에러 메시지를 분석해보면 데이터베이스는 sqlite3를 사용하고 있다는 사실을 알 수 있었고, 파일명이 ./db/wkrm_/.db라는 것을 통해서 ./db/wkrm_{username}.db와 같은 형식으로 만들어진다는 것을 유추할 수 있었다.


따라서 우리가 원하는 username인 admin에 해당하는 데이터베이스는 ./db/wkrm_admin.db에 저장된다는 것을 알 수 있었다. 그래서 해당하는 경로로 가서 파일을 다운로드 받았다.



앞의 에러 내용을 통해서 이 데이터베이스는 sqlite3로 되어 있으므로 sqlite3 viewer를 이용해서 데이터베이스에 들어있는 내용을 보았다.



memo에 있는 내용을 보니 flag가 들어있는 파일의 경로를 알려주고 있었으므로, 이 페이지로 들어가서 내용을 확인하니 아래와 같았다.



따라서 Key값이 16229f9a100f6cbc096de2fcaa67d80506e37868라는 것을 알아낼 수 있었다. 이 문제의 경우에는 Python 코드를 사용하지 않았으므로 소스코드는 첨부하지 않는다.


'Hacking > - Wargame.kr' 카테고리의 다른 글

[Wargame.kr] 6. DB is really GOOD  (0) 2016.02.09
[Wargame.kr] 5. WTF_CODE  (0) 2016.02.08
[Wargame.kr] 4. login filtering  (0) 2016.02.07
[Wargame.kr] 3. flee button  (0) 2016.01.13
[Wargame.kr] 2. QR CODE PUZZLE  (0) 2016.01.11
[Wargame.kr] 1. already got  (0) 2016.01.07