Web Hacking/webhacking.kr 풀이

old-19 write-up

박연준 2024. 1. 11. 16:07

문제 정보

https://webhacking.kr/challenge/js-6/

 

Challenge 19

 

webhacking.kr

 

 

풀이

 

문제 사이트로 접속하면 id에 placeholder로 admin이 적혀있는 폼이 보인다.

 

 

제출 버튼을 누르니 다음과 같이 admin이 아니라고 나온다.

 

 

url을 자세히 살펴보면 파라미터에 admin 값이 담기므로 GET 메소드 방식이라는 것을 알 수 있었다.

 

 

소스 코드를 살펴보면 maxlength는 최대 문자를 지정하고, size는 너비를 지정하는 함수이기 때문에 입력폼에 5개의 문자밖에 입력하지 못한다.

<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>
<form>
id : <input type=text name=id value='admin' maxlength=5 size=5>
<input type=submit>
</form>
</body>
</html>

 

 

admin을 입력했을 때의 소스 코드를 분석해보면 you are not admin 뒤에 meta 태그가 뭔지 살펴보았다. <meta> 태그의 http-equiv 속성은 content 속성에 명시된 값에 대한 HTTP 헤더를 제공한다고 한다. 속성값으로 refresh가 사용되면 해당 문서를 새로고침할 시간 간격을 명시한 것이라고 하여, 이는 3초 후에 사용자로부터 페이지에 대한 제어를 ./ 으로 이동시킨다.

<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>
you are not admin<meta http-equiv=refresh content=3;url=./>

 

 

11111을 입력해보았늗네 다음과 같이 'hello 11111'이 나오고 logout 버튼이 생겼다. 근데 logout 버튼을 눌러도 로그아웃이 되지 않고 이 페이지에 갇혀버렸다.

 

 

burp suite를 이용해서 로그아웃 버튼을 눌렀을 때의 패킷을 잡아보았는데 응답 부분의 쿠키 userid의 값이 deleted로 바뀌었다.

 

 

페이지에서 userid의 쿠키 값을 deleted로 바꾸니 error 메세지로 바뀌었다. 

 

 

아무것도 존재하지 않아 userid의 쿠키를 지우면 다시 원래의 페이지로 돌아온다.

 

 

일단 id값을 admin이 아닌 값으로 바꾸면 userid의 쿠키값이 생기므로 이를 분석해보자. admi를 입력하고 userid에는 아래와 같이 쿠키 값이 생성되었다. 

 

 

이를 디코딩하려 base64도 해보고 다른 것도 해보았지만 이건 아닌 것 같다.

 

 

여기서부터 도저히 감을 잡지 못해서 writeup을 보니 base64 인코딩이 맞다. 하지만 a, d, m, i, n이 한 문자씩 md5로 암호화되어있고, 이를 이어 붙여 base64로 인코딩을 해야 한다고 한다.

 

a,d,m,i,n을 모두 md5로 암호화하면 다음과 같다.

  • a=0cc175b9c0f1b6a831c399e269772661
  • d=8277e0910d750195b448797616e091ad
  • m=6f8f57715090da2632453988d9a1501b
  • i=865c0c0b4ab0e063e5caa3387c1a8741
  • n=7b8b965ad4bca0e41ab51de7b31363a1

 

이를 base64로 인코딩하면 다음과 같다.

  • MGNjMTc1YjljMGYxYjZhODMxYzM5OWUyNjk3NzI2NjE4Mjc3ZTA5MTBkNzUwMTk1YjQ0ODc5NzYxNmUwOTFhZDZmOGY1NzcxNTA5MGRhMjYzMjQ1Mzk4OGQ5YTE1MDFiODY1YzBjMGI0YWIwZTA2M2U1Y2FhMzM4N2MxYTg3NDE3YjhiOTY1YWQ0YmNhMGU0MWFiNTFkZTdiMzEzNjNhMQ==

이제 로그인 되어 있는 페이지에서 userid의 쿠키 값을 위로 변경해주면 해결!

'Web Hacking > webhacking.kr 풀이' 카테고리의 다른 글

old-47 write-up  (0) 2024.01.11
old-27 write-up  (0) 2024.01.11
old-32 write-up  (0) 2024.01.10
old-06 write-up  (0) 2024.01.10
old39 write-up  (0) 2024.01.10