WEB/webhacking.kr (old)

webhacking.kr 19번

hongjw 2020. 1. 29. 01:15

level 19 첫화면

js문제여서 소스코드를 먼저 확인해봤는데,

소스코드

자바스크립트 코드도 없고, 눈에 띄는 코드가 없었다.

 

id가 admin일 때, 제출버튼을 눌러보니 admin이 아니라고 출력됐다.

 

이번엔 id를 guest라고 입력하고 제출했더니, hello guest가 출력됐다.

그런데 logout버튼을 눌러도 첫 화면으로 돌아가지 않는다 ㅠ

 

쿠키를 확인해보니, 

인코딩된 값이 userid 쿠키값으로 설정되어있었다. 인코딩된 값은 guest라고 예측할 수 있었다.

이 때 ! userid쿠키값을 보고 base64로 인코딩된 값이라는 것을 알아야 한다.

 

쿠키값을 base64 디코딩했더니, 이상한 문자열이 출력되었다ㅠ

디코딩된 값

base64 디코딩할 때, 기억해야할 점 !

%3D는 =으로 교체해서 디코딩해줘야한다.

 

디코딩된 값을 보니, guest가 base64가 아닌 다른 해시함수로 한번 더 인코딩된 것같다. (guest를 두번 인코딩한 것이라고 예측)

어떤 해시함수를 썼는지 추측하기 위해 디코딩된 값의 길이를 계산해보니, 160이 나왔다.

16진수로 표현되어있기때문에 비트 수는 160*4로 640비트.

대표적인 해시함수 md5,sha1,sha2 중 출력길이가 640비트인 해시함수는 없다.

 

guest가 5글자이기 때문에 640/5를 해보니 128 !

출력 해시값이 128비트인 해시함수는 md5이므로, md5로 인코딩한 값이라고 예측할 수 있다.

>>> hashlib.md5('g'.encode()).hexdigest()
'b2f5ff47436671b6e533d8dc3614845d'
>>> hashlib.md5('u'.encode()).hexdigest()
'7b774effe4a349c6dd82ad4f4f21d34c'
>>> hashlib.md5('e'.encode()).hexdigest()
'e1671797c52e15f763380b45e841ec32'
>>> hashlib.md5('s'.encode()).hexdigest()
'03c7c0ace395d80182db07ae2c30f034'
>>> hashlib.md5('t'.encode()).hexdigest()
'e358efa489f58062f10dd7316b65649e'

파이썬으로 guest를 각각 md5로 인코딩시켜보니 userid 쿠키값과 같은 것을 볼 수 있다 !

 

=>userid 쿠키값은 guest를 md5로 인코딩하고, 인코딩된 값을 base64로 또 한번 인코딩한 값이다.

admin을 각 알파벳마다 md5인코딩한 후, base64로 인코딩한 값을 userid 쿠키값으로 설정하면 문제 해결 !

>>> admin = hashlib.md5('a'.encode()).hexdigest() + hashlib.md5('d'.encode()).hexdigest() + hashlib.md5('m'.encode()).hexdigest() + hashlib.md5('i'.encode()).hexdigest() + hashlib.md5('n'.encode()).hexdigest()
>>> print(admin)
0cc175b9c0f1b6a831c399e2697726618277e0910d750195b448797616e091ad6f8f57715090da2632453988d9a1501b865c0c0b4ab0e063e5caa3387c1a87417b8b965ad4bca0e41ab51de7b31363a1

base64 인코딩 사이트 : https://www.base64encode.org/

 

Base64 Encode and Decode - Online

Encode to Base64 or Decode from Base64 with advanced formatting options. Enter our site for an easy-to-use online tool.

www.base64encode.org

 

admin으로 userid 쿠키값 설정!

'WEB > webhacking.kr (old)' 카테고리의 다른 글

webhacking.kr 24번  (0) 2020.02.03
webhacking.kr 20번  (0) 2020.02.02
webhacking.kr 15번  (0) 2020.01.27
webhacking.kr 18번  (0) 2020.01.27
webhacking.kr 17번  (0) 2020.01.27