Skip to content

Challenges Info

tkaixiang edited this page Sep 18, 2021 · 12 revisions

Challenges can be created/edited/managed via the Admin Panel's Challenges Tab. (/Admin/Challenges)

General Notes 📓

  • All existing transaction records will be updated with the new score on edit of a challenge's score.
  • Challenges are all referenced by their challenge IDs
  • You can see a full preview of how the challenge modal looks like by clicking on the Preview button at the bottom

Configurable Challenge Properties 🔧

Challenge Category 📃

Specify the challenge category this challenge will be in. You can either Select an existing category or enter a new category

Tags 🏷️

Specify any number of tags represent this challenge (E.g RE, Forensics)

  • The 1st tag is taken as the main tag. When the user sorts by tags in the challenges page, this tag is used

Flags 🎏

Enter any number of flags that are accepted for this challenge

  • If you revoke a flag, any existing solves for that flag are not revoked

Hints ❓

Enter any number of hints and their respective costs. Hints from top to bottom are hints 1-n respectively

  • If you revoke a hint, any existing purchases for that hint are not refunded

Challenge Description ℹ️

Challenge description. You can see a preview right below the editor

  • Supports Markdown AND HTML

Visibility 👁️

Controls whether the challenge is hidden/shown to users (Type 0 type 1 users)

  • Admin users (type 2) can still view and purchase hints on hidden challenges in the Challenges page
  • Challenges which are hidden have a Hidden Challenge text below them in the Challenges page.
  • Hidden challenges do not accept any solves even from admins. Admins will get an Unknown Error on trying to solve a hidden challenge.

Challenge Required 🔒

Locks this challenge until the specified challenge has been created.

  • The challenge is referenced by challenge ID. Hence it will still point to the correct challenge even if the required challenge name changes
  • If the required challenge is deleted, the link will be broken and users will encounter errors 😢

Writeup Link 🔗

Enter a link to a writeup if you want to provide them to the user.

  • There is also the option of only revealing the link after the user has solved the challenge.

Dynamic Scoring 💯

You can opt to enable dynamic scoring for a challenge by enabling the Dynamic Scoring option in the create/edit challenge page.

  • Solves to Minimum is the number of solves till the challenge decays to the minimum score
  • Minimum Points is the minimum points a challenge can decay to
  • Initial Points is the initial amount of points of a challenge before any decay

Dynamic scoring is implemented based on ctfd's parabolic decay formula here.

If you choose this option, the Challenge Points field value will be disabled and disregarded. It will be calculated based on the current no. of solves and the dynamic scoring parameters you entered for this challenge on edit/creation. You can see the edited score in the Table afterwards.

Deleting Challenges 🗑️

You can delete any numbers of challenges at once via the table editor

  • Any hints purchased are refunded
  • Any points gained from flags submitted are also removed
  • Any transaction records for that challenge are deleted

Managing Categories 📃

You can "set the visibility of a category" via the Category Management section.

  • In reality, this sets the challenge visibility of all challenges inside the category with no way of recovering its past visibility

Various settings 🔧

Disable Submissions 🚫

Disables any new submissions to challenges. Even for admins. Use this to stop people from submitting after your CTF has ended

Set Socket Limit 🔢

Sets the maximum number of sockets(tabs) that can be connected to the live scoreboard per account. This is to help prevent people from hogging up all the sockets for the live scoreboard, especially for large CTFs.

  • If an account hits the limit set, they will get a friendly warning message and the earliest connected socket of that account will get disconnected.
Clone this wiki locally