평범한 코드이다.
you are not admin이라는 문자열이 뜨고 몇 초 후에 다시 메인 페이지로 돌아간다.
guest를 입력해줬더니 hello guest라는 문자열이 보인다.
제출한 값 그대로 나온다.
admin을 제외하고는 모두 이렇게 뜨는 것 같다.
하지만, logout을 눌러도 페이지에 변화가 없고,, 주소창도 그대로여서 쿠키를 확인해봤다.
일반적으로 사용하는 PHPSESSID 말고 userid라는 쿠키가 있다.
들어있는 값을 URL 디코더로 돌린 후 %3D 는 =를 의미한다는 것을 알았다.
어떠한 난독화된 값이 =로 끝난다면 이는 base64 로 인코딩된 것일 확률이 높다고 한다.
따라서 이것을 base64 방식으로 디코딩하려 했으나 오류만 나고,, 알 수 없는 문자열이 가득..
그래서 다시 처음부터 시작
0을 입력했을 때는 URL 주소가 정상적으로 나타나지만 메인 페이지에 머물러 있다.
따라서 1을 입력해봤다.
비교적 짧은 쿠키값이 나왔다.
이 또한 %3D로 끝난다. base64 방식으로 인코딩 된 것 같아서 base64 방식으로 디코딩해보았다.
암호 알고리즘 별 해쉬값의 길이를 보니 (https://m.blog.naver.com/PostView.naver?blogId=thescream&logNo=220210025548&proxyReferer=https:%2F%2Fwww.google.com%2F)
32자리라면 MD5 해시값이라고 한다.
따라서 1을 MD5로 암호화해줬더니
디코딩 한 결과, 앞서 봤던 1의 결과가 두번 연속으로 나타나는 것을 알 수 있다.
따라서 이 문제에선 입력한 문자열을 각각 MD5방식으로 암호화한 후,
전체적으로 base64방식으로 또 한번 암호화하고 있다는 것을 알게되었다.
따라서 문제를 해결하려면
① admin 각 문자열에 대해 MD5로 암호화
② 합쳐서 base64로 암호화
③ 쿠키값에 이를 입력
하는 것이 좋겠다.
a → 0cc175b9c0f1b6a831c399e269772661
d → 8277e0910d750195b448797616e091ad
m → 6f8f57715090da2632453988d9a1501b
i → 865c0c0b4ab0e063e5caa3387c1a8741
n →7b8b965ad4bca0e41ab51de7b31363a1
이를 쿠키값에 입력할 때 주의할 점!
마지막 =는 %3D로 적어줄 것!!
'WEB > WEB Hacking' 카테고리의 다른 글
[Webhacking.kr] Challenge(old) 25번 풀이 △ (0) | 2021.05.30 |
---|---|
[Webhacking.kr] Challenge(old) 20번 풀이 (0) | 2021.05.23 |
[Webhacking.kr] Challenge(old) 18번 풀이 (0) | 2021.05.23 |
[Webhacking.kr] Challenge(old) 17번 풀이 (0) | 2021.05.23 |
[Webhacking.kr] Challenge(old) 16번 풀이 (0) | 2021.05.23 |