티스토리 뷰

보안/CTF

[Web] Meeting 2021 Tamil CTF Writeup

돔돔이부하 2021. 9. 30. 02:53
728x90
반응형

문제 설명 : Gokul is trying to cheat in this test, Help him

이번 문제는 729점 짜리 문제로 30명밖에 풀지못한 Web 문제입니다. 문제의 난이도는 매우 쉬운편에 속하지만 guessing 이 많이 필요한 문제여서 그런지 사람들이 많이 못 풀었던 것 같습니다.

 

Enter Meet code 입력란이 있습니다. 무슨 구글 미팅이나 온라인 웹캠 사이트 같습니다.

코드를 입력하고 Enter 키를 누르면 POST 요청으로 아래와 같이 보내지는데, 다시 처음 페이지로 돌아와지는 것으로 보아서는 올바른 코드가 아닌 것 같아 그런 것 같습니다.

POST /join-meet HTTP/1.1
Host: 45.79.195.170:5003
Content-Length: 14
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://45.79.195.170:5003
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://45.79.195.170:5003/
Accept-Encoding: gzip, deflate
Accept-Language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7
Connection: close

meet-code=test

그러다가 New Meeting 이란 버튼을 눌렀을 때는 / 경로에 GET 방식으로 요청을 보내는 것을 확인했습니다. 근데 결국 동일한 페이지를 보여주는 걸로 끝났습니다.

 

한참을 헤매다가 New Meeting 버튼이 사실은 GET 이 아니라 POST 인 데 잘못 만든 건 아닐까? 이런 생각도 해보면서 POST로 요청을 해보았습니다.

HTTP/1.0 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 46
Server: Werkzeug/2.0.1 Python/3.9.7
Date: Wed, 29 Sep 2021 17:38:13 GMT

The encoded meet code is

MTMzNy1tMzM3LWMwZDM=

그리고 놀랍게도 base64 인코딩 된 어떤 값이 나왔습니다.

디코딩을 해보았더니 아래와 같이 나왔습니다. 아무래도 이것이 meet-code 인듯 해보였습니다.

1337-m337-c0d3

로딩화면이 나오다가 아래와 같은 페이지가 나온 걸 볼 수 있습니다.

그리고 위에 검은색 부분에 영상 강의가 나오는데 무슨 오류에선 지 나오지 않아 직접 /static 경로로 들어가서 봤을 때 아래와 같이 힌트를 주고 있는 걸 볼 수 있습니다.

그리고 /form 경로로 접속했을 때는 다음과 같은 화면이 나왔습니다.

뭔가 계속 아무거나 입력해도 나오는 것은 없었습니다. magic word 가 뭔지도 모르겠었습니다. 그래서 다시 이전 화면에서 뭔가를 더 시도해봤습니다. 그러다가 쿠키값을 확인했고, user 키 값에 해당하는 값을 볼 수 있었습니다.

문제 지문이 Gokul 이 test를 cheat 하고 싶다는 것이 생각이 나서 Jopraveen 을 Gokul 로 변경해보았습니다.

 

그러더니 갑자기 Type your message 폼이 나타났습니다. 메시지를 한번 전송해보았습니다.

그러더니 test 라고 방금 보낸 메시지가 화면에 보이는 것을 확인했습니다.

그리고 해당 페이지의 소스코드를 보았는데 또다른 힌트가 보입니다. 채팅 폼에다가 link 를 전송하게 되면 Exploit Everything 이라는 사용자가 열어 본다고 합니다. 

<!-- Note: If you send a link here Exploit Everything will open it-->
<form action="/sendmsg" method="GET">
<input name="message" placeholder="Type your message" type="text">
<button type="submit"><i class="fa fa-paper-plane" aria-hidden="true"></i></button>
</form>

그래서 저는 webhook 링크를 보내보았습니다.

위와 같이 해서 cookie 값을 탈취할 수 있었습니다. user 에 해당하는 값을 쿠키에서 user 의 value 값으로 넣어주고 새로고침 해보았는데, 아래와 같이 Magic word 라는 것이 나왔습니다.

그리고 이 Magic Word 를 이제 /form 경로에서 사용해보았습니다.

Submit 버튼을 누르니 플래그가 나왔습니다.

 

이 문제도 단순한 문제였지만, 너무 guessing 이 많이 필요한 문제였어서 그런 지 생각보다 사람들이 많이 풀지 않은 것 같습니다.

728x90
반응형
댓글