Profile

i love cat

as3617

Google CTF 2021 - LETSCHAT [web]

[https://letschat-web.2021.ctfcompetition.com/](https://letschat-web.2021.ctfcompetition.com/)

들어가면 invitecode를 입력하라고 나오지만 이 부분은 그냥 무시해도 된다. response값을 200으로 바꾼다음 회원가입해서 로그인 해주면
아래와 같은 화면이 나온다.

image

채팅방을 만들고 유저를 초대해서 대화를 할 수 있는데 내가 문제를 보기 시작했을 때는 트롤링 때문에 모든 유저의 채팅을 마스킹처리했다고 한다.
근데 아무리 봐도 전혀 취약점이 없었다.

그러다 발견한게 있었는데
http://letschat-messages-web.2021.ctfcompetition.com/a99fb895-e6db-11eb-88a1-a2a63078d4f6
message를 반환해주는 api서버에 로그인없이도 접근하는 것이 가능했다. 무엇보다 request 요청의 제한이 없었으며
uuid값만 알아낸다면 다른 유저의 채팅을 볼 수 있다고 생각했다. 맨 처음에는 채팅이 마스킹처리가 안되있었으므로 플래그 메세지는 그대로
있을 것이며 플래그도 얻을 수 있을 것이다.

그럼 이제 uuid값을 알아내야하는데 잘보면 uuid v1을 사용하고 있는 것을 알 수 있다.
uuid v1은 v3과 v4와 달리 timestamp를 기준으로 uuid값을 구하는데 다음의 예시를 보면 알 수 있다.

a99fb895-e6db-11eb-88a1-a2a63078d4f6
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx

M : uuid version
N : The 1–3 most significant bits of digit, N, indicate the UUID variant.

Variant    Msb0    Msb1    Msb2    Msb3    Description
0    0    X    X    X    Reserved, NCS backward compatibility.
1    1    0    X    X    The variant specified in this document.
2    1    1    0    X    Reserved, Microsoft Corporation backward compatibility.
3    1    1    1    X    Reserved for future definition.
a99fb895-e6db-11eb-88a1-a2a63078d4f6

Verion : 1
Mac address : a2a63078d4f6
arbitrary Clock ID : 88a1(only performed once)
TimeStamp : 0x1ebe6dba99fb895

image

이렇게 timestamp값을 복구할 수 있다. 그럼 이제 브포해주면 된다. 브포는 생각보다 간단하다.
그냥 귀찮아서 내가 가지고 있는 timestamp값 기준으로 테이블만든 다음에 flag나올 때까지 쓰레드로 열심히 돌렸다.
https url로 보내면 어느정도 날라가다가 max try error가 나오는데 http도 정상적으로 접근되길래 http로 고친 다음 한참 기다리니깐 플래그 나왔다.

'ctf writeup' 카테고리의 다른 글

SSTF 2021 - poxe_center writeup  (0) 2021.08.17
IJCTF 2021 Memory  (0) 2021.07.25
0CTF/TCTF 2021 Quals - 1linephp [web]  (0) 2021.07.05
zh3r0 CTF v2 Web writeup  (1) 2021.06.06
m0leCon 2021 Teaser Writeup  (0) 2021.05.18