문제 설명

 

 

1. MongDB의 ObjectID 구조

참고 사이트 : https://docs.mongodb.com/manual/reference/method/ObjectId/

 

 

ObjectId() - MongoDB Manual v7.0

Docs Home → Develop Applications → MongoDB Manual ObjectId( )mongosh MethodThis page documents a mongosh method. This is not the documentation for a language-specific driver, such as Node.js.For MongoDB API drivers, refer to the language-specific Mongo

www.mongodb.com

 

 

문제 풀이

 

문제 페이지에 들어가니 총 4개의 게시물과 그에 대한 설명이 있다. 각 게시글들은 'no' 라는 명칭의 게시글 number를 가지고 있고, 게시글이 업데이트된 timestamp 값을 출력해주고 있다.

 

 

첫번째 게시물을 클릭하면 아래와 같이 작성된 게시글의 내용을 확인할 수 있다.

 

Title이 Flag인 게시글을 클릭할 경우 아래와 같이 비밀글이라는 경고가 뜨며 열람이 거부된다.

 

 

문제에 참고 자료로 첨부된 MongDB의 ObjectID 구조를 설명하는 자료와 추가적인 구글링을 통해 페이지 내 게시글의 'no'  값은 아래와 같이 정리될 수 있었다.

https://kim-jong-hyun.tistory.com/95

( 출처 : https://kim-jong-hyun.tistory.com/95 )

 

662772a 783462a9cff9fd34c         Mongo          guest         2024-04-23T08:34:47.467Z
TimeStamp

662772a 783462a9cff 9fd34c         Mongo          guest         2024-04-23T08:34:47.467Z
Random Value

662772a783462a9cff 9fd34c         Mongo          guest         2024-04-23T08:34:47.467Z
Counter

 

 

위의 구조를 가지고 문제 페이지내 게시글의 정보를 정리해보았다.

게시글 Title 게시글 No 게시글 TimeStamp
Hello 662772a383462a9cff9fd34b 2024-04-23T08:34:43.459Z
Mongo 662772a783462a9cff9fd34c 2024-04-23T08:34:47.467Z
FLAG ?? 2024-04-23T08:34:48.468Z
Good 662772ac83462a9cff9fd34e 2024-04-23T08:34:52.470Z

 

운이 좋았던 건지, 시간이 맞았던 건지 다행히도 Random 한 값이 다른 게시글들과 딱 들어 맞았다. 문제의 서버를 재실행 하니 랜덤한 값은 다른 값을 가지고 있는 것을 보아 아마도, 운이 좋았던것이 아닐까.

 

FLAG 게시글위 위 아래 게시글인 Mongo와 Good 게시글의 Counter 값은 9fd34c, 9fd34?, 9fd34e 와 같이 뒷자리만 달랐다. 따라서 Flag 게시글의 objectID Conter값은 9fd34d로 유추해볼 수 있다.

 

다른 게시글과 다른 점은, 가운데 있는 값이 다르다는 것이다. 랜덤한 값임에도 불구, 운이 좋게도 아래와 같은 결과로 정리될 수 있었다.

Hello   662772a 38 3462a9cff9fd34b   2024-04-23T08:34:43.459Z
Mongo 662772a 78 3462a9cff9fd34c   2024-04-23T08:34:47.467Z
FLAG   662772a ?? 3462a9cff9fd34c   2024-04-23T08:23:42.093Z
Good   662772a c8 3462a9cff9fd34e   2024-04-23T08:34:52.470Z

 

글을 쓰다보니 너무 무식하게 푼것 같기도 하다.

예상되는 FLAG 게시글의 ObjectID를 Mongo보다 높은 값인 79이후의 값으로 brute-forcing 해보았다.

 

 

거의 대부분의 값이 Page not exist 결과가 출력되었지만, 하나의 값에서 아래와 같은 결과가 출력되었다.

662772a883462a9cff9fd34d