2019 Christmas CTF Platform

재작년 초에 만들어서 얼마 전 Christmas CTF까지 수정해서 잘 사용했던 CTF 플랫폼이다.
Laravel 같은 타 프레임워크 안쓰고 예전에 만들어뒀던 프레임워크 기반으로 만들었다.
(나머지는 아래 깃헙 참고)
github.com/munsiwoo/christmas-ctf-platform

다이나믹 랭킹 구현 이슈

Christmas CTF 당시 랭킹 페이지에서 이슈 하나가 있었다. 지금은 랭킹을 쿼리 한방으로 가져오지만
이전 구현 방식은 임시 테이블을 생성하고, PHP에서 팀당 점수를 계산한 뒤 일일이 다 INSERT 해주는 방식이었다.
왜 그렇게 구현했는지 모르겠는데 당연히 오버헤드가 엄청 컸고, DDoS까지 들어와 엎친데 덮친 상황이 생겼다.

당시에 초당 들어오는 요청도 어마어마했지만 내 생각엔 랭킹 구현 방식도 서버 터지는데 한몫한 거 같다.
들어오는 패킷 분석해서 fail2ban, iptables로 다 차단 박고 랭킹 페이지를 로그인해야 볼 수 있는 방식으로
바꾸고 나서야 서버가 터지는 걸 방지할 수 있었다는 그런 이야기..

물론 지금은 구현 방식을 아예 바꿨다. → /src/classes/Render.class.php

앞으로의 방향

- 취약점 발견시 패치
취약점 발견하시고 알려주시는 분께 감사의 표시로 소정의 선물을 드립니다.

- 최적화, 구현 오류(로직 버그) 수정

- 추가 구현
1. 문제 업로드에서 파일 첨부 기능 추가
2. 지정해놓은 문제만 원하는 시간에 자동으로 오픈되는 기능 추가
3. URL 라우터 직접 만들어서 적용

후기

개발자도 아닌 것이 설계부터 프론트, 백엔드까지 혼자 완성해낸게 기특하다.

Timeline

2020.01.16 : 오픈 소스로 공개
2020.01.20 : docker-compose 파일 올림