Countdown to CTF Start

 

If you have a hard time reading this site, you can enable a simple accessibility mode by clicking on

Participating in this CTF means that you follow the conditions and code of conduct!

Technical CTF Information

The CTF runs from 01.03. 18:00 CEST to 01.05. 18:00 CEST.

During this time, challenges will be released on the 01.03. at 18:00 as well as on the 01.04. at 18:00.

All challenges can be solved until the last minute of the CTF (though when the system stops taking your flag, there is no "but it wasn't 18:00 on my machine", so make sure you don't wait for the last second).


You should be placed into the correct bracket (junior, senior or open) depending on the information you provided when registering.

Please double-check your placement as soon as the scoreboards are open and open a ticket on Discord if you were placed incorrectly


Challenges follow dynamic scoring, so they give points based on how many participants solve them. The more participants solve a challenge, the fewer points it gives.

  • beginner challenges start at 100 points and go to 50 points after 55 solves
  • easy / medium / hard challenges start at 500 points and go to 100 points after 55 solves

However, the points you have for a challenge you solved are the same for everybody that has solved it, no matter when each individual solved it.

This means there is no advantage to solving a challenge early or late, but if you're unsure which challenge to solve next, you can try to gauge the difficulty of the challenges by how many points it is currently worth.


The formula used to calculate the points is as follows:

import math
PTS_DELAY = 4

def calculate_ctf_points(solves, pts_max=500, pts_min=100, pts_decay_rate=100):
    """
    Calculate CTF points using sigmoid function decay.

    Parameters:
    solves (int): The score points (1, 2, 3, ...).
    max_points (int): The maximum points available
    min_points (int): The minimum points available
    steepness (float): Controls the steepness of the decay

    Returns:
    int: The CTF points awarded.
    """
    pts_diff = pts_max - pts_min
    pts_shift = pts_diff / 40
    pts_adj = pts_diff + pts_shift + ((pts_diff + pts_shift) / math.exp(PTS_DELAY))

    decay = 10 / (15 + solves) * (pts_decay_rate / 100)
    decay_rate = math.exp(decay * (max(solves - 1, 0) - (PTS_DELAY / decay)))
    pts = pts_adj / (1 + decay_rate) + pts_min - pts_shift

    pts = math.ceil(pts)

    return max(pts, pts_min)

If you have any questions feel free to open a ticket on Discord!