CTFd v3.3.0

It's been a few months since the release of CTFd v3.2.0 and we just released v3.3.0 a few days ago! Hosted CTFd customers have already received the v3.3.0 update. Self hosted installations should update their Docker image or download the latest release from Github.

Here's some of the most important changes!

Team & User Combined Scoreboard

Under Teams mode, the CTFd Admin Panel will now show both the team scoreboard as well as the user scoreboard.

Add user to team UI

An interface in the Admin Panel to add a user to a team has been added to make it easier for admins to manually add users into a team.

Faster Scoreboard API endpoint

In 3.3.0 a faster implementation of /api/v1/scoreboard was implemented for CTFs running in Teams Mode. Prior to this fix, CTFd was having the database iterate through every team trying to find teams with points.

This led to poor performance with certain large events, specifically when hitting the /api/v1/scoreboard endpoint for scoreboard refreshing. In testing, the endpoint was sped up by a significant factor, generally between 20-30x!

# Old route
$ curl -o /dev/null -s -w 'Total: %{time_total}s\n' \
    http://localhost:4000/api/v1/scoreboard
Total: 62.941061s

# New route
$ curl -o /dev/null -s -w 'Total: %{time_total}s\n' \
    http://localhost/api/v1/scoreboard
Total: 2.181876s

Easier to access solves

The /api/v1/challenges and /api/v1/challenges/[challenge_id] endpoints have two new fields:

  • A new solves key which specifies how many times a challenge has been solved
  • A new solved_by_me key which indicates whether the requesting user has solved a given challenge
{
    "success": true,
    "data": [{
        "id": 1,
        "type": "standard",
        "name": "The Lost Park",
        "value": 50,
        "solves": 3,
        "solved_by_me": false,
        "category": "Forensics",
        "tags": [],
        "template": "/plugins/challenges/assets/view.html",
        "script": "/plugins/challenges/assets/view.js"
    }]
}
Small example of the new API response

Disable Public Team Creation

The ability to disable team creation and only allow for joining pre-existing teams has been added. Should be very useful for educational workshops and classroom environments!

Better graph colors

Graph coloring in the core theme and themes based off of it should now have brighter more vibrant colors. Fewer colors should be generated that are too light or too dark.

Theme Development Improvements

We know there are some difficulties with writing CTFd themes and we're working on it! For now a few changes have been provided by the community to make CTFd theme development a little bit easier.

Theme Fallback

There is now a THEME_FALLBACK configuration in config.ini that makes it easier to develop themes. THEME_FALLBACK will configure CTFd to try to find missing theme files in the default built-in core theme. This means that if enabled, you can use incomplete themes.

Theme Inheritance

Templates in a theme can now reference templates in another. For example by using {% extends "core/page.html" %}, you can inherit from the core theme's page.html template and override specific template blocks.


The full change log can be be seen at the release page for v3.3.0.

You can also try out CTFd v3.3.0 on the Demo CTFd instance!

Hosted CTFd Updates

Now for a few updates about the Hosted CTFd infrastructure!

Webhooks

Webhooks allow an application to send a HTTP request to a server or application that you control when a certain action occurs.

For example, sending out an HTTP request when a new user registers. This could be used to bootstrap an environment or to send out more registration details to new users or just to be notified.

We've been working hard on an implementation for webhooks in Hosted CTFd instances! We're just about ready to release it in a beta form but we'd love for any interested customers to try it out ahead of the release!

Contact us if you're interested and let us know what you'd like to use CTFd webhooks for!

CTFd Store

The Hacker theme price has been dropped to $29. If you purchased the plugin within a month of the price decrease, feel free to reach out to us and we'd be happy to refund the difference!

The Learning theme has been updated to re-introduce functionality that had been accidentally reverted. Customers should have received emails with an updated download.


That's all for now! But stay tuned for some exciting news towards the end of the month!

Show Comments