Challenges
Creating and managing challenges in rCTF.
Create and manage challenges from /admin/challs.
Creating and updating challenges
Every challenge has a unique ID and uses either decay or dynamic scoring. Changes that affect points automatically recalculate the leaderboard. See Scoring for both models and the dynamic score API.
Flags
A challenge holds a list of flag entries, and a submission solves the challenge when any entry accepts it. Most challenges need a single entry, but the list form covers cases like keeping an old flag valid after a rotation or accepting several spellings of the same answer.
See Flag providers for all providers and their options.
Dynamically scored challenges don’t take flag submissions, so switching a challenge to dynamic scoring clears its entries.
Challenge visibility
Challenges support two visibility controls:
- Setting
hiddentotruecompletely hides the challenge from non-admin users. - Setting
releaseTimeto a Unix-millisecond timestamp makes the challenge visible only after that moment. Set it tonullto make the challenge visible immediately when the CTF starts.
Together, these fields let you upload a challenge early without showing it to participants.
File attachments
Upload challenge files separately under Uploading, then reference them from the challenge. Each file records its display name, URL, and size.
Deleting challenges
Deleting a challenge also removes its solves and recalculates the leaderboard.
Warning
Challenge deletion is irreversible and removes all solve records for that challenge.
Instancer and admin bot configuration
Challenges can optionally include extra configuration blocks:
instancerConfigholds the configuration for per-team instances. When set, it is validated against the instancer provider’s schema. See Instancer for details.adminBotConfigholds the trusted TypeScript handler for admin bot visits. The handler defines its inputs, validation, timeout, and browser behavior. See Admin bot for the API.