Skip to content

MJSEC-MJU/MSG_CTF_BACK

Repository files navigation

🔐 MJSEC_CTF PROJECT

이 프로젝트는 MJSEC_CTF(Capture The Flag) 대회를 위한 웹 사이트로, CTFd를 사용하지 않고 직접 개발되었습니다. 이 문서는 프로젝트의 설치 방법, 기여자 정보, 기술 스택, 협업 방식, 개발 기간, 시스템 아키텍처, ERD, 구현된 기능, 그리고 화면 구성을 설명합니다.

Technology Stack

React Spring Boot MySQL Redis Docker Docker Compose GitHub Actions Flask Gunicorn NGINX Docker Hub


목차

  1. 서버 설치 방법
  2. 기여자 표
  3. 협업 방식
  4. 개발 기간
  5. 시스템 아키텍처
  6. ERD
  7. 구현된 기능
  8. 화면 구성

📌 서버 설치 방법

아래 단계를 따라 서버를 설치하고 실행할 수 있습니다.

1. 저장소 복제

프로젝트는 백엔드, 프론트엔드, 디스코드 봇으로 나누어져 있습니다. 각 저장소를 복제합니다.

# 백엔드 저장소 복제
git clone https://github.com/MJSEC-MJU/MSG_CTF_BACK.git
cd backend

# 프론트엔드 저장소 복제
git clone https://github.com/MJSEC-MJU/MSG_CTF_WEB.git
cd frontend

# 디스코드 봇 저장소 복제
git clone https://github.com/MJSEC-MJU/MSG_DISCORDBOT.git
cd discord-bot

🙌 기여자 표

Backend Team

Profile Role Expertise
jongcoding
jongcoding
PM/DevOps Admin API, Sys Arch
minsoo0506
minsoo0506
Maintainer Maintenance
ORI-MORI
ORI-MORI
Backend Ranking API
tember8003
tember8003
Backend User API
yunttai
yunttai
Backend Signature API
alivemarin
alivemarin
Backend LeaderBoard API

Frontend Team

Profile Role Expertise
MEspeaker
MEspeaker
Frontend Design & UI/UX
youminki
youminki
Frontend UI/UX
jenn2i
jenn2i
Frontend User API
hanwoooo
hanwoooo
Frontend UI/UX & Design

Discord Bot Team

Profile Bot
jongcoding
jongcoding
FIRST_bot
jiyoon77
jiyoon77
DJ_BOT
tember8003
tember8003
TICKET_bot
walnutpy
walnutpy
ROLE_bot

🔥 협업 방식

플랫폼 사용 방식
매주 금요일 2시 회의, 라이브 코딩
PR을 통해 변경사항 및 테스트 과정 확인
컨벤션, API, 회의 기록 문서화

📆 개발 기간

  • 2024.12.28 ~ 2025.01.04 : 팀 규칙 및 코딩 컨벤션 의논, 기능 정의
  • 2025.01.04 ~ 2025.01.18 : API 명세서 작성, ERD 설계
  • 2025.01.18 ~ 2025.01.25 : 프로젝트 환경 세팅, 로그인/회원가입 기능 구현
  • 2025.01.25 ~ 2025.02.01 : 문제 생성/수정/삭제 기능 구현
  • 2025.02.01 ~ 2025.02.08 : 문제 전체 조회, 문제 상세 조회, 문제 제출 기능 구현
  • 2025.02.08 ~ 2025.02.15 : 유저 프로필 조회, 리더보드(랭킹 & 그래프) 기능 구현
  • 2025.02.15 ~ 2025.02.22 : 디스코드봇 개발 및 연동
  • 2025.02.22 ~ 2025.03.01 : 관리자 기능(사용자/문제 생성, 조회, 수정, 삭제) 구현
  • 2025.03.01 ~ 2025.03.08 : 버그 수정
  • 2025.03.08 ~ 2025.07.01 : 테스트 및 코드 리펙토링
  • 2025.07.01 ~ 2025.07.31 : CTF v2.0 기획
  • 2025.08.01 ~ 2025.08.15 : 마일리지 기반 결제 기능 구현
  • 2025.08.15 ~ 2025.09.31 : 개인 단위에서 팀 단위로 로직 변경 (대회 정책 변경)
  • 2025.10.01 ~ 2025.10.08 : 시그니쳐 문제 조회/생성/삭제 기능 추가
  • 2025.10.08 ~ 2025.10.15 : 리더보드 조회 기능 수정 (팀 단위)
  • 2025.10.15 ~ 2025.11.09 : 테스트 및 코드 리펙토링

🛠️ 시스템 아키텍처

MJSECCTF drawio


📝 ERD

msg_ctf_erd

⚙️ 구현된 기능

⭐️ USER

  • 회원가입 / 로그인 / 로그아웃 기능
  • 유저 프로필 조회 기능 (획득한 점수, 랭크, 푼 문제 조회)
  • 이메일 인증 기능 (인증 코드 발송 및 검증)
  • ID 및 이메일 중복 확인
  • 개인 문제 풀이 히스토리 조회

⭐️ TEAM

  • 팀 프로필 조회 (팀원 정보, 팀 점수, 팀 순위)
  • 팀 문제 풀이 히스토리 조회

⭐️ CHALLENGE

  • 문제 목록 전체 조회 (페이지네이션 지원)
  • 문제 상세 조회 (문제 제목, 설명, 링크)
  • 문제 파일 다운로드
  • 문제 제출 (다이나믹 스코어링, 디스코드 봇 연동)

⭐️ SIGNATURE (시그니처 검증 시스템)

  • 시그니처 코드 검증 및 문제 언락
  • 팀별 언락 상태 조회
  • 언락된 챌린지 목록 조회

⭐️ LEADERBOARD

  • 팀 단위 실시간 리더보드 (SSE 스트리밍)
  • 팀 단위 점수 그래프 (SSE 스트리밍)

⭐️ PAYMENT

  • QR 기반 마일리지 결제 시스템
  • 결제 토큰 생성
  • 마일리지 체크아웃 처리
  • 팀별 결제 히스토리 조회

⭐️ ADMIN - 회원 관리

  • 회원 조회 / 추가 / 수정 / 삭제
  • 조기 퇴소 상태 변경
  • 전체 회원 목록 조회

⭐️ ADMIN - 문제 관리

  • 문제 조회 / 생성 / 수정 / 삭제 (파일 첨부 지원)
  • 문제 요약 정보 조회
  • 전체 제출 기록 조회
  • 문제별 제출 기록 조회
  • 특정 사용자 제출 기록 철회
  • 사용자별 전체 제출 기록 삭제

⭐️ ADMIN - 팀 관리

  • 팀 생성 / 삭제
  • 팀원 추가 / 삭제
  • 팀 마일리지 부여
  • 전체 팀 목록 조회

⭐️ ADMIN - 결제 관리

  • 전체 결제 히스토리 조회
  • 결제 철회 및 마일리지 환불

⭐️ ADMIN - 시그니처 관리

  • 시그니처 코드 일괄 업서트 (JSON)
  • 시그니처 코드 CSV 임포트/익스포트
  • 코드 풀 조회 및 랜덤 코드 생성
  • 코드 재배정 및 소비상태 초기화
  • 단일/일괄 코드 삭제
  • 강제 언락 처리

⭐️ ADMIN - IP 관리

  • IP 차단 / 차단 해제 / 차단 연장
  • 차단된 IP 목록 조회
  • IP 활동 로그 조회
  • 의심스러운 IP 목록 집계
  • IP 화이트리스트 관리
  • IP 밴 캐시 재구축

⭐️ ADMIN - 기타

  • 점수 재계산
  • 대회 시작/종료 시간 설정
  • 관리자 권한 검증

⭐️ TIME

  • 서버 시간 조회
  • 대회 시간 조회 (시작/종료 시간)

⭐️ TOKEN

  • Access Token / Refresh Token 재발급

👾️ DISCORD BOT

  • First-Blood BOT : 채널 멤버에게 처음 문제를 풀이한 사람 정보 전달
  • Role BOT : 채널 멤버에게 공지 사항, 대회 시작 정보, 우승자 정보 전달
  • Ticket BOT : 티켓 생성 (관리자와 개인 채팅방 생성), 티켓 방 (티켓 방 내에서 대화한 로그 txt 형태로 저장, 대화 종료) 기능
  • DJ BOT : 모든 멤버 음소거 / 음소거 해제, 노래 추가 / 재생 / 건너뛰기 / 중단, 플레이리스트 조회 기능

🖥️ 화면 구성

메인 페이지 1

메인 페이지 1
메인 페이지 2

메인 페이지 2
메인 페이지 3

메인 페이지 3
메인 페이지 4

메인 페이지 4
메인 페이지 5

메인 페이지 5
로그인 페이지

로그인 페이지
문제 리스트 페이지

문제 리스트 페이지
문제 상세 페이지

문제 상세 페이지
리더보드 페이지(상단)

리더보드 페이지 상단
리더보드 페이지(하단)

리더보드 페이지 하단
랭킹 페이지

랭킹 페이지
마이 페이지

마이 페이지
타이머 페이지

타이머 페이지

🤖 DISCORD BOT

🎟️ Ticket BOT 🎭 Role BOT
🩸 First-Blood BOT 🎵 DJ BOT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors