해킹을 배우는 사람의 입장에서 자세하게 풀이법을 정리하고자 합니다.
WOWHACKER WEBGAME SEASON2 Level 4 풀이법입니다.
링크: http://webgame.wowhacker.com/wlv4game/
주어진 링크를 따라 들어가 봅시다.
로그인 화면이 나오는 군요.
친절하게 guest 계정의 로그인 정보까지 적어놨군요.
자! 단계별로 차근 차근 풀어봅시다.
먼저 guest 계정으로 로그인 해봅시다.
여기저기 링크가 있군요. 기웃기웃 거려 봅시다.
혹시 중요한 힌트가 숨겨져 있을지도 모르니깐요.
'Query' 입력란도 있군요. (아쉽게도 함정입니다. 단순히 경고창만 띄워주도록 되어 있습니다.)
그외에는 별 다른게 없어 보입니다.
그럼 쿠키 값을 살펴 봐야겠죠?
크롬(chrome) 브라우저의 'Edit This Cookie' 플러그인을 설치해봅시다.
크롬의 우측 상단에 쿠키 모양 아이콘을 클릭하면 아래와 같은 창이 뜹니다.
'WOWSESSIONID' 필드에 보면 왠 값이 들어있네요.
흠.. 왠지 MD5 해쉬 값인것 처럼 보이는 군요.
구글에서 MD5 decrypt 를 해주는 사이트를 찾아 들어가봅시다.
※ 이론적으로 MD5 해쉬는 복호화 할 수 없지만.. DB에 다양한 값들의 해쉬값을 가지고 있으면서 복호화를 수행해주는 사이트가 다수 존재합니다.
디코드 필드에 복사해온 값을 붙여 넣고 복호화를 시도해봅시다.
http://md5.web-max.ca/
어라? 복사한 값의 절반 정도만 붙여넣기가 되네요.
오호라~ 값 2개가 붙어 있나봅니다.
어쨌든 앞 부분은 복호화를 했더니 'guest'라는 문자열이라고 나옵니다.
접속 계정의 ID를 MD5 해쉬로 한 값이 앞 부분이라는걸 알아냈군요.
뒷 부분을 마저 붙여넣기 하고 복호화 해봤더니 찾을 수 없다고 나옵니다. 잘 알려진 패턴은 아닌가 보네요.
로그아웃 하고 다시 한번 'WOWSESSIONID' 값을 확인해봅시다.
클릭하면 큰 그림을 볼 수 있어요~
'guest'에 해당하는 값은 그대로인데 뒷 부분 값은 변했네요.
왠지 접속 시간을 이용해서 'WEBSESSIONID'를 만드는것 같다는 느낌이 드는군요.
접속 시간인 'LoginTime: 2013-06-05 09:26:27' 값을 timestamp로 변환해 봅시다.
웹에서 하고 싶으시다면 아래 사이트에서 변환하면 됩니다.
http://www.epochconverter.com/
local time으로 설정 한 후 timestamp를 생성하면 됩니다.
물론, Linux(Ubuntu)에서 bash로 변환하는 방법도 있습니다.
date 명령을 이용하면 쉽게 timestamp값을 구할 수 있죠.
$ date +%s -d "20130605 09:26:27"
1370391987
여기서 나온 값을 가지고 MD5 해쉬를 구해봅시다.
물론, MD5 해쉬도 Ubuntu(Linux) 에서 변환하는 방법이 있습니다.
md5sum 명령어를 활용하면 손쉽게 구할 수 있죠.
$ echo -n 1370391987 | md5sum
9c90960cf8ec5b1f4e32062884a33ec6 -
결과가 나왔네요.
9c90960cf8ec5b1f4e32062884a33ec6
WOWSESSIONID의 time 값과 일치하는 값입니다.
이것으로 세션키는 접속 계정의 ID 와 접속 시간의 timestamp값의 MD5 해쉬 값이란걸 알게 됐습니다.
※간혹 위와 동일하게 수행하더라도 결과값이 제대로 나오지 않는 경우가 있습니다.
원인은 제가 문제 출제자가 아니다 보니 .. 잘 모르겠네요.
현재 접속해 있는 사람 중 'admin'이란 계정이 있는데, 딱 봐도 관리자 계정일거란 생각이 드네요.
'admin'이란 문자열을 MD5 해쉬한 값을 구해봅시다.
http://www.md5hashgenerator.com/
이제 'admin'의 접속 시간을 MD5 해쉬한 값을 구해서 세션키를 바꿔치기 해 봅시다.
그런데.. 'admin'이 언제 접속했는지 어떻게 알아야 할까요?
보아하니 화면 중앙에 있는 공지글을 'admin'이 썼을 테니..
최소한 최초 글을 쓰기 이전에 접속을 했겠군요.
이제 접속 시간을 알아내봐야 할 시간입니다.
이제 저 삽질하는 이미지의 의미가 이해가 되면서 몸에 와닿기 시작하네요.
'로그인 시간을 열심히 삽질해서 알아내 봐라!' 라는 의미겠죠?
MD5해쉬 값을 구하기 어려우니 bash로 구해봅시다.
시간을 넉넉히 잡아 9시 11분 부터 최초 글을 작성한 9시 12분 21초 까지 값을 MD5 해쉬를 수행해봅시다.
저는 ubuntu에서 아래 명령어로 생성했습니다.
$ for ((i = 1213056660; i < 1213056741; i++)) ; do echo -n $i | md5sum >> mf5_hash.txt; done
내용이 너무 길어서 접어뒀습니다. 보고 싶으신 분들은 아래 클릭!
0423e79f367881ac02c16c6fa8c80b2f -
298afa17262c32b3e0d755f0e38b2a46 -
04624dffa3643cdd2d4d852e3a3ab6ac -
0f54d905d2ba5555738f01b51142b2bd -
ee36b0f5de81c70e4233d484a6d855fb -
ddd08ec1ac06a5c32a20434faa07791c -
76d12cf2c72bfd07198644d7b8a5def3 -
d55f119eb12dc9b23c6dd662655d4810 -
de8fee7e281a0b592006beba9fbc1cfc -
0dc5e77334f2e0f7d20dba1f0ae799bb -
0eb34735e61ed614e387a994ac66239c -
3114e392d82cae300e365c452465e776 -
af54f28c5cf39397044cfbc68f0d3c64 -
c57319e7c8b8a6698a38e199ec24548e -
8ca9d9636f34d08f165bd808cae7c803 -
834446dd8265e7431a481c646faa5ad0 -
fc1e4b50375575c55b5233ecbd13facf -
7afa6b272abb8e455f0d551866571dbc -
ffeb724b0f6320c4f7c4df6ccc17b0b8 -
a4c0203e1e09f69f828dd59bd36dd8d9 -
c008c891805af3fe0ba9ea8682635934 -
a80cd0f86f4c47ca20cff0e20e947cef -
3d16ededebf2bc018162c5dd7f9a1f0d -
7ec5eca0b7a17c1ebd9ba8adc5ec51c0 -
074c0a97375d056848c34500e6604eb3 -
29505ec6b90660e24f90b09854f852a9 -
2c95533c63d12dbd08e6fb42bfa40747 -
abe4585afba7277e55772da198e91f11 -
e0a0ec1696d6ce3c772bcf84df1a25ad -
7290a09dfd315b8890ef46bd51bda715 -
c45d67819b6ccbfc5229a79688028a67 -
4bbc369c337c36a89e86e533095925d6 -
f062965610aee87edd354e13e6b1b62b -
3c90df9486961c2c6221e395f99a111f -
0b5928f4986c6a464723179641a952db -
8763a1829e4c8ff1df0bd6aab9c7db16 -
a901542759d55132dd441167ea00d2bb -
c32376f0be5457c6b47d0ed3c241e7a9 -
0309b8317dabf4bbe900e51b393d4406 -
661c0c7199de8f47b1ecad99cea65104 -
4d186d59cab09149096e1680272c6f52 -
14b4d8fca42360de90da08b94c5d838b -
424cfb6314b6b622ab6c93c69cc5ae5c -
3637b4281c3b1fe63296501f7bac51a6 -
a0149e74fabf0189490c627c15fa85b0 -
ee025efade17bfcc445755b10987b01f -
359af33f34d9a135ca73b3e302c7ee1c -
aa5a368ecd69786a1a1d19796dcf8a5c -
eeb7116542f2b0bef0b2ba1cb3599ec5 -
4272d0106ef063d8d4e40993e8dec628 -
9238e1ed5aacc16104a1873d7d4bb2db -
464d0db3907b0bfa185444947d4c0103 -
b3edc09a955b357b04693d1c09b82255 -
864a4693f4ec340f863da985edd3468c -
afe15b88466705fead824195806a81c4 -
69e719f860c055c948c16c1c1135a00d -
55f24c5d804f0d8f7676d7756a5c820b -
7c4ae1333e76a0feb6900cfdda17cec7 -
96f72b2c6d1a40325182462bc7cb50c8 -
f698ebd88f46d227d0bcd544336e9df1 -
67c90cd08d7a3d88f90e63fe768f5a8c -
1296688d71095400fe0babe1c63f8a2e -
b95698926aa4092c4f9ef07bb23238a9 -
ad5e6b91b0cd086fc4707ee3ed62ba32 -
8a6f826d37f22f4de557070c134b1503 -
cc31a03776714a2404f668001c2bdfbc -
30212eaf1416f4914c80083a7d3cf25b -
4f205a1857b6f0757767d6dbda48cfd3 -
49773ecbc6311b28ae9ed492a2daeab4 -
2bb057f4c3c20574d1d03a7dfaf91f77 -
91cf58a5675ed5d92a453e306b9fc80c -
2220e8ce6f03392bb9c5420db0ad449b -
d46bc54ca64616384c21953c355b51e9 -
e6a7afdfab26fb06c9c6ff2ab7150d22 -
5579f45635943f78b125ee03ff34f41b -
8ac6b012a9380661bb8cfd5ac3a17508 -
0299863bff27a31322420675f0355ed2 -
b230002c5111eb5473cbc4478e6705cc -
114bae300836f4cc0dfecbeac5aa8af3 -
e42814a3df8b198aacf5de6dc3b1fe50 -
d99f781afbfad9196f67672a2daa6a1d -
이제 'admin'의 해쉬값인 '21232f297a57a5a743894a0e4a801fc3'와 timestamp의 해쉬 값들을 조합해서 열심히 쿠키를 바꿔치기 할 차례입니다.
진정한 삽질이죠.
결과적으로 '67c90cd08d7a3d88f90e63fe768f5a8c'가 답입니다.
관리자는 9시 12분 00초에 접속했나봅니다.
'edit this cookie'의 'WOWSESSIONID' 필드에 지금까지 구한 두 MD5 해쉬 값을 붙여서 넣어봅시다.
'21232f297a57a5a743894a0e4a801fc367c90cd08d7a3d88f90e63fe768f5a8c'
쿠키값을 변조한 후 'Submit cookie changes'를 눌러주면 됩니다.
쿠키값 변조를 통해 'admin'으로 접속을 하게 되면 아래와 같은 화면이 나옵니다.
'guest'로 접속했을 때와 달리 접속 시간 하단부에 'Userlist'라는 링크가 하나 생겼네요.
궁금하니 클릭해봅시다.
두둥! 애타게 찾던 정답이 여기 숨어 있었네요.
guest:guest
admin:nologin
level4:VeRY Good! My Friend!
축하합니다. 다음 단계로 넘어가봅시다!