Web API
문제를 업로드 하기 위해서는 다음과 같은 정보를 입력해야 합니다.
- 문제 제목
- 문제를 대표하는 제목입니다.
- 정해진 서식이 없으며 자유롭게 설정할 수 있습니다.
- 설명
- 문제에 대한 설명입니다. Markdown 포맷으로 작성합니다.
- 문제에 대한 정보나 문제를 해결하기 위해 필요한 단서를 기술하는 등의 문제와 관련된 내용을 적을 수 있습니다.
- 플래그
- 문제를 해결한 뒤 획득 할 수 있는 Flag입니다.
- 정해진 형식은 없지만 유추하기 어렵게 작성하는 것이 이상적입니다.
- 태그
- 문제에 해당하는 분야를 태그합니다. 모든 문제는 하나 이상의 태그가 지정되어야 합니다.
- 다음과 같은 태그들을 사용할 수 있으며, 이외에도 적절한 태그를 사용할 수 있습니다.
pwnable
reversing
web
crypto
forensics
cloud
misc
VM 설정
만약 문제를 해결하기 위해 별도의 서버를 필요로 하는 경우 VM 사용하기를 통해 VM을 추가할 수 있으며 세부 사항을 설정 할 수 있습니다.
- 운영체제
- VM에서 사용하는 운영체제의 종류를 지정합니다.
- 다음과 같은 운영체제를 사용할 수 있습니다.
- Linux
- VM 메모리
- VM 인스턴스가 사용하는 최대 메모리 크기를 지정합니다.
- VM 디스크 크기
- VM 인스턴스가 사용하는 최대 디스크 크기를 지정합니다.
- VM Expose 포트
- 외부에서 VM으로 접근할 수 있는 포트를 지정합니다.
- comma(
,
)로 구분된[port]/[protocol]
형태의 쌍 목록을 사용하여야 합니다.- protocol로는
tcp
와udp
를 사용할 수 있습니다.
- protocol로는
- 지정하지 않을 경우 어떤 포트도 개방하지 않습니다.
필요한 메모리 및 디스크 크기는 실제로 Docker를 사용해 image를 생성하고 container를 실행하는 것으로 필요한 크기를 확인할 수 있습니다.
Image의 크기는docker image
명령어를, 메모리의 크기는docker stats
명령어를 통해 확인할 수 있습니다.
필요한 공간의 최소화를 위해 Base image는
slim
혹은alpine
버전을 사용하는 것을 권장합니다. 빌드하는 시간을 단축시킬 수 있으며, 디스크 크기 문제로 인한 에러를 크게 줄일 수 있습니다.
파일 업로드
폴더를 업로드 할 때는 다음과 같은 조건을 만족해야 합니다.
- 반드시
public/
폴더를 포함해야 합니다.- 이 폴더는 문제를 푸는데 필요한 파일들을 포함하는 폴더입니다.
- 이 폴더의 파일들은 문제에 접근하는 모든 사용자가 자유롭게 다운로드할 수 있습니다.
- Git을 통한 업로드에 필요한
Specfile
,Description.md
등의 파일은 필요하지 않습니다. - VM을 필요로 하는 경우
Dockerfile
이 최상위 경로에 존재해야 합니다.- Docker 컨테이너를 만들기 위한 설정을 기술한 파일입니다.
- 자세한 내용은 Dockerfile Reference를 참조해 주세요.
웹사이트를 통해 문제를 업로드 한 경우
upload-1
과 같은 태그가 자동으로 부여됩니다.
다음 예제 파일들을 이용해 필요한 파일 구조를 확인할 수 있습니다.