id를 입력하는 폼이있다. admin 으로 제출해보자.
admin 이 아니라고한다.
admin 인걸 판별하는 요소가 있을텐데, 소스에는 없으니
아무거나 입력해 쿠키를 확인해보자.
안녕하다고 인사를해준다. logout은 눌러도 로그아웃되지 않는다.
쿠키에 userid 가 생겻다. %3D 는 = 를 의미하는데,
= 로 끝났으니 base64 인코딩인걸 확인할 수 있다.
%3D 를 = 로 고쳐서 디코딩하면 또다른 암호화문자열을 확인할수있다.
32글자이므로 위키피디아에서 암호화알고리즘별 길이를 확인해보자.
MD5 로 해시된 문자열같아서 복호화해보기로했다.
a 가 나온다. 결과적으로 id를 md5 암호화한뒤,
그걸다시 base64로 인코딩한결과가 userid 쿠키값이란걸 알 수 있다.
혹시모르니 다른것도 해보자.
쿠키값을 삭제했더니 logout 이 된다.
admin 은 안되니 admi 로 로그인해봤다.
↓
아까 a의 해쉬값을 결과에서 볼 수 있다.
이말인 즉슨, 한글자씩 md5해쉬한뒤, 붙여서 base64디코딩한것이 userid 쿠키값이라할 수 있다.
a=0cc175b9c0f1b6a831c399e269772661
d=8277e0910d750195b448797616e091ad
m=6f8f57715090da2632453988d9a1501b
i=865c0c0b4ab0e063e5caa3387c1a8741
n=7b8b965ad4bca0e41ab51de7b31363a1
한글자씩 md5해쉬했다. (소문자로 바꿔줘야됨)
base64인코딩 후
admi 로 로그인한상태로 userid 를 바꿔준다. (이때 = 는 %3D 로 고친다)
체크버튼 누르고, logout버튼을 누르면 문제가풀린다.