-
Dreamhack - mongoboardwargame/Dreamhack 2025. 3. 17. 22:03
[LEVEL 1 - mongoboard - web]
node와 mongodb로 구성된 게시판이 주어진다.
비밀 게시글을 읽어 FLAG를 획득하라고 되어있다.
- MongoDB < 4.0.0
FLAG만 no가 없으며, 해당 게시글을 누르면 위와 같이 alert 창이 뜬다.
개발자도구의 네트워크 탭을 열어보면 위와 같이 JSON형식의 데이터를 넘겨준 서버 주소가 api/board인 것을 볼 수 있다.
첫 번째 글을 들어간 후, 내용을 API 서버로부터 넘겨 받으려면 /api/board/no으로 넘겨줘야 한다는 것을 알게 되었다.
FLAG 게시글은 no가 없다.
이제 mongodb에서 _id가 어떻게 생성되는지 알아내야 한다.
https://www.mongodb.com/ko-kr/docs/manual/reference/method/ObjectId/
ObjectId() - MongoDB Manual v8.0 - MongoDB Docs
선택 사항. 새 ObjectId 의 24자 16진수 문자열 값입니다.
www.mongodb.com
위 글을 통해 mongodb의 ObjectId()가 어떤 구조로 이루어지는지 참고했다.
ObjectId는 아래와 같이 구성된다고 한다.
- 4바이트 타임스탬프
- 5바이트 랜덤요소
- 3바이트 카운터
이제 다시 보니 답이 보인다.
4바이트, 5바이트, 3바이트 끊어서 보면, 중간에 5바이트는 모두 같고, 앞 4바이트는 Mongo 게시글에서 +2초를 하면 되고, 뒤 3바이트는 등록될 때마다 +1 증가하고 있다.
따라서 순서대로 67d8124a, 5172f00de5, db1ea5가 된다.
즉, /api/board/67d8124a5172f00de5db1ea5 에 접속하면 되는 것이다.
예상대로 플래그값이 출력되는 걸 볼 수 있다.
플래그를 획득했다!
'wargame > Dreamhack' 카테고리의 다른 글
Dreamhack - [wargame.kr] login filtering (1) 2025.04.13 Dreamhack - [wargame.kr] type confusion (0) 2025.03.17 Dreamhack - Simple Patch Me (0) 2024.11.26 Dreamhack - [wargame.kr] strcmp (0) 2024.11.13 Dreamhack - [wargame.kr] fly me to the moon (0) 2024.11.13