이 프로젝트는 MJSEC_CTF(Capture The Flag) 대회를 위한 웹 사이트로, CTFd를 사용하지 않고 직접 개발되었습니다. 이 문서는 프로젝트의 설치 방법, 기여자 정보, 기술 스택, 협업 방식, 개발 기간, 시스템 아키텍처, ERD, 구현된 기능, 그리고 화면 구성을 설명합니다.
아래 단계를 따라 서버를 설치하고 실행할 수 있습니다.
프로젝트는 백엔드, 프론트엔드, 디스코드 봇으로 나누어져 있습니다. 각 저장소를 복제합니다.
# 백엔드 저장소 복제
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
|
|
|
| 플랫폼 | 사용 방식 |
|---|---|
| 매주 금요일 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 : 테스트 및 코드 리펙토링
- 회원가입 / 로그인 / 로그아웃 기능
- 유저 프로필 조회 기능 (획득한 점수, 랭크, 푼 문제 조회)
- 이메일 인증 기능 (인증 코드 발송 및 검증)
- ID 및 이메일 중복 확인
- 개인 문제 풀이 히스토리 조회
- 팀 프로필 조회 (팀원 정보, 팀 점수, 팀 순위)
- 팀 문제 풀이 히스토리 조회
- 문제 목록 전체 조회 (페이지네이션 지원)
- 문제 상세 조회 (문제 제목, 설명, 링크)
- 문제 파일 다운로드
- 문제 제출 (다이나믹 스코어링, 디스코드 봇 연동)
- 시그니처 코드 검증 및 문제 언락
- 팀별 언락 상태 조회
- 언락된 챌린지 목록 조회
- 팀 단위 실시간 리더보드 (SSE 스트리밍)
- 팀 단위 점수 그래프 (SSE 스트리밍)
- QR 기반 마일리지 결제 시스템
- 결제 토큰 생성
- 마일리지 체크아웃 처리
- 팀별 결제 히스토리 조회
- 회원 조회 / 추가 / 수정 / 삭제
- 조기 퇴소 상태 변경
- 전체 회원 목록 조회
- 문제 조회 / 생성 / 수정 / 삭제 (파일 첨부 지원)
- 문제 요약 정보 조회
- 전체 제출 기록 조회
- 문제별 제출 기록 조회
- 특정 사용자 제출 기록 철회
- 사용자별 전체 제출 기록 삭제
- 팀 생성 / 삭제
- 팀원 추가 / 삭제
- 팀 마일리지 부여
- 전체 팀 목록 조회
- 전체 결제 히스토리 조회
- 결제 철회 및 마일리지 환불
- 시그니처 코드 일괄 업서트 (JSON)
- 시그니처 코드 CSV 임포트/익스포트
- 코드 풀 조회 및 랜덤 코드 생성
- 코드 재배정 및 소비상태 초기화
- 단일/일괄 코드 삭제
- 강제 언락 처리
- IP 차단 / 차단 해제 / 차단 연장
- 차단된 IP 목록 조회
- IP 활동 로그 조회
- 의심스러운 IP 목록 집계
- IP 화이트리스트 관리
- IP 밴 캐시 재구축
- 점수 재계산
- 대회 시작/종료 시간 설정
- 관리자 권한 검증
- 서버 시간 조회
- 대회 시간 조회 (시작/종료 시간)
- Access Token / Refresh Token 재발급
- First-Blood BOT : 채널 멤버에게 처음 문제를 풀이한 사람 정보 전달
- Role BOT : 채널 멤버에게 공지 사항, 대회 시작 정보, 우승자 정보 전달
- Ticket BOT : 티켓 생성 (관리자와 개인 채팅방 생성), 티켓 방 (티켓 방 내에서 대화한 로그 txt 형태로 저장, 대화 종료) 기능
- DJ BOT : 모든 멤버 음소거 / 음소거 해제, 노래 추가 / 재생 / 건너뛰기 / 중단, 플레이리스트 조회 기능
|
메인 페이지 1
|
메인 페이지 2
|
|
메인 페이지 3
|
메인 페이지 4
|
|
메인 페이지 5
|
로그인 페이지
|
|
문제 리스트 페이지
|
문제 상세 페이지
|
|
리더보드 페이지(상단)
|
리더보드 페이지(하단)
|
|
랭킹 페이지
|
마이 페이지
|
|
타이머 페이지
|
|
| 🎟️ Ticket BOT | 🎭 Role BOT |
![]() |
![]() |
| 🩸 First-Blood BOT | 🎵 DJ BOT |
![]() |
![]() |





























