링크로 들어가면 19번 문제를 확인할 수 있다.
첫 화면엔 로그인 화면이 뜨고 id default값으로 admin이 주어졌다.
제출버튼을 클릭하면
you are not admin이라는 문구가 보인 후 다시 처음의 로그인 화면으로 돌아갔다.
이번엔 id값으로 default인 admin이 아니라 3을 입력하고 제출해보았다.
admin이 아닌 다른 값을 입력하면 로그인에 성공했지만 문제는 풀리지 않았다.
또한 아무것도 실행하기 전 초기화면의 주소와 hello 3이 출력된 화면은 모두 같은 주소를 사용하고 있었다.
∴ admin이 아닌 값은 모두 로그인이 되고 로그인 되어도 주소가 변하지 않는다
문제를 파악하기 위해 소스코드를 확인해보았다.
소스코드
<html>
<head>
<title>Challenge 19</title>
<style type="text/css">
body { background:black; color:white; font-size:10pt; }
input { background:silver; color:black; font-size:9pt; }
</style>
</head>
<body>
hello 3<br><input type=button value='logout' onclick=location.href='?logout=1'>
ㄴOㄱ
소스코드에서도 특이점을 발견할 수 없었다.
그래서 쿠키 값을 확인해보았다. (EditThisCookie 실행)
쿠키값이 이해할 수 없는 형식이였고 %3D로 마무리 된다는 점에서 url 인코딩 되어있음을 알 수 있었다.
※ url인코딩의 특징 : 코드 앞에 %문자가 포함된다. (%3D는 = 을 의미함)
그래서 url 디코딩을 해봤다.
url 디코딩 전 : ZWNjYmM4N2U0YjVjZTJmZTI4MzA4ZmQ5ZjJhN2JhZjM%3D
url 디코딩 후 : ZWNjYmM4N2U0YjVjZTJmZTI4MzA4ZmQ5ZjJhN2JhZjM=
디코딩 전후의 차이는 %3D → = 으로 변한 것 뿐이다.
= 로 마무리 되는 점을 통해 url 디코딩의 결과가 base64 인코딩 되어있음을 알 수 있었다.
※ base 64 인코딩의 특징 : 코드의 마지막에 = 또는 == 문자가 포함된다.
그래서 base64 디코딩을 해봤다.
base64 디코딩 전: ZWNjYmM4N2U0YjVjZTJmZTI4MzA4ZmQ5ZjJhN2JhZjM=
base64 디코딩 후 : eccbc87e4b5ce2fe28308fd9f2a7baf3
base64 디코딩 후의 결과는 32자 128bit이다.
이는 md5 인코딩의 특징이므로 md5 디코딩을 해봤다.
md5 디코딩 전 : eccbc87e4b5ce2fe28308fd9f2a7baf3
md5 디코딩 후 : 3
md5 디코딩 결과값이 id값으로 입력했던 3과 일치했다.
쿠키 값 (url디코딩 → base64 디코딩 → md5 디코딩) = id 입력값
∴ 쿠키값 = admin을 md5 인코딩 → base64 인코딩 → url 인코딩 값
→ 문제 해결
해결
[EditThisCookie] 실행 // 크롬 확장 프로그램에서 설치 가능
인코딩 · 디코딩은 인터넷 툴 이용 ( ⁎ ᵕᴗᵕ ⁎ )
① admin md5 인코딩
a = 0cc175b9c0f1b6a831c399e269772661
d = 8277e0910d750195b448797616e091ad
m = 6f8f57715090da2632453988d9a1501b
i = 865c0c0b4ab0e063e5caa3387c1a8741
n = 7b8b965ad4bca0e41ab51de7b31363a1
② base 64 인코딩
MGNjMTc1YjljMGYxYjZhODMxYzM5OWUyNjk3NzI2NjE4Mjc3ZTA5MTBkNzUwMTk1YjQ0ODc5NzYxNmUwOTFhZDZmOGY1NzcxNTA5MGRhMjYzMjQ1Mzk4OGQ5YTE1MDFiODY1YzBjMGI0YWIwZTA2M2U1Y2FhMzM4N2MxYTg3NDE3YjhiOTY1YWQ0YmNhMGU0MWFiNTFkZTdiMzEzNjNhMQ==
③ url 인코딩
MGNjMTc1YjljMGYxYjZhODMxYzM5OWUyNjk3NzI2NjE4Mjc3ZTA5MTBkNzUwMTk1YjQ0ODc5NzYxNmUwOTFhZDZmOGY1NzcxNTA5MGRhMjYzMjQ1Mzk4OGQ5YTE1MDFiODY1YzBjMGI0YWIwZTA2M2U1Y2FhMzM4N2MxYTg3NDE3YjhiOTY1YWQ0YmNhMGU0MWFiNTFkZTdiMzEzNjNhMQ%3D%3D
url 인코딩 결과값을 쿠키값으로 변경하고
초록버튼 클릭 후 새로고침해주면
admin으로 로그인 되면서 문제가 풀린다!
'Webhacking' 카테고리의 다른 글
[Webhacking.kr] old-14번 풀이 (0) | 2022.12.22 |
---|---|
[Webhacking.kr] old-12번 풀이 (0) | 2022.12.21 |
[Webhacking.kr] old-24번 풀이 (0) | 2022.12.21 |
[Webhacking.kr] old-1번 풀이 (0) | 2022.12.21 |
[Webhacking.kr] old-17번 풀이 (0) | 2022.12.21 |