DMOJ Capture The Flag '21

Welcome to DMOJ Capture The Flag '21!

This contest is very different from others on the DMOJ platform. You should take a look at the previous DMOJ CTF to get an idea about how this one will be.

All problems are created by c.

Competition Parameters

  • This CTF will run from February 1, 2021 12PM to February 8, 2021 12PM. You will have the full contest duration to capture the flags, this contest is not windowed.
  • The scoreboard will be visible for the entire duration of the CTF.
  • There will be some number of problems grouped into five categories: General, Web, Forensics, Reverse Engineering, and Exploitation.
  • Each problem will be grouped through the contest ranking label. General problems will be prefixed with G, Web with W, Forensics with F, Reverse Engineering with R, and Exploitation with E.
  • There will be no partials.
  • The CTF will be run on the Atcoder format with a time penalty of zero. In other words, you will be ranked based on your score, breaking ties with the earliest time taken to achieve that score.
  • This CTF will be unrated.
  • There will be no limit on submissions (Note: this is not an open invitation to perform a timing attack).


  • Do not share flags/solutions with other contestants during the entire duration of the CTF.
  • You are free to use any materials you find on the internet.
  • Do not attack the judge infrastructure, other contestants, or the problem authors/testers.

Flag Format

Unless otherwise specified, all flags will follow the regex ctf{[A-Za-z0-9_]{30,64}}.


To follow the tradition of a CTF, all problems will be assigned a weight of 500 at the beginning of the contest and slowly decrease in weight as more contestants solve them. However, due to the overhead of recomputing problem weights live, we will only recompute problem weights once after the contest. Post contest, each problem will be assigned a weight using the following formulae:

Define \displaystyle  \text{clamp}(a, x, b) = \begin{cases} a & \text{if } x < a \\ x & \text{if } a \le x \le b \\ b & \text{if } b < x \end{cases}

\displaystyle  \text{score}(x) = -250 \tanh(4x - 1.5) + 285

Each problem will be assigned a weight of \lceil \text{clamp}(50, \text{score}(p), 500) \rceil, where p is \frac{\text{number of contestants who have solved this problem}}{\text{total number of contestants in the competition}}.

Category-Specific Information


Web problems are run on infrastructure hosted by the contest writer. For cost reasons, they will not be hosted beyond the contest duration.

After the contest, Docker build scripts will be provided for every web problem so you can host them yourselves.

Web problems will not be published after the contest, you will have to virtual the contest if you wish to do them.


Due to reproducibility issues with binary exploitation problems, this contest will contain exploitation problems that involve high-level programming languages instead of the exploitation of programs written in C/C++.

To simplify the exploitation process, the goal of each exploitation problem will be to output the flag to the standard error stream of the program you're exploiting.


This contest was written by a person who is deathly afraid of math and low-level programming. Do not expect problems that involve those particular fields.


Problem Points AC Rate Users
DMOJ Capture The Flag '20 G1 - small 1 52.8% 101
DMOJ Capture The Flag '20 G2 - again 1 38.9% 6
DMOJ Capture The Flag '20 G3 - too_big 1 62.5% 8
DMOJ Capture The Flag '20 G4 - ohseeare 1 9.4% 17
DMOJ Capture The Flag '20 W1 - hello 1 46.5% 39
DMOJ Capture The Flag '20 W2 - motd 1 42.1% 23
DMOJ Capture The Flag '20 W3 - whoami 1 44.4% 8
DMOJ Capture The Flag '20 W4 - themes 1 100.0% 11
DMOJ Capture The Flag '20 W5 - flag_encryptor 1 75.0% 8
DMOJ Capture The Flag '20 F1 - unbreakable 1 80.0% 12
DMOJ Capture The Flag '20 F2 - meme 1 75.0% 15
DMOJ Capture The Flag '20 F3 - redraw 1 100.0% 6
DMOJ Capture The Flag '20 F4 - rip 1 40.9% 9
DMOJ Capture The Flag '20 R1 - reversing 1 63.8% 29
DMOJ Capture The Flag '20 R2 - easy 1 100.0% 8
DMOJ Capture The Flag '20 R3 - m0re 1 78.6% 10
DMOJ Capture The Flag '20 R4 - 3xc3l 1 6.2% 8
DMOJ Capture The Flag '20 R5 - unpkg 1 100.0% 3
DMOJ Capture The Flag '20 E1 - rude 1 43.8% 12
DMOJ Capture The Flag '20 E2 - thank_you 1 75.0% 13
DMOJ Capture The Flag '20 E3 - yava 1 23.5% 4
DMOJ Capture The Flag '20 E4 - python4 1 23.8% 9