Challenge Design Improvements in CTFd v1.0.5

When a security professional thinks about a Capture The Flag they typically think about a set of challenges that they solve on their computer after reading a small piece of introductory text. After solving that challenge, they submit their answer in the form of a small piece of text “flag{that_looks_like_this}”. Despite the great benefits to improving security knowledge and techniques, this is an admittedly boring transaction.

That is why in CTFd v1.0.5 we improved our Challenge Type plugins to make them much easier to write.

Challenge Type Plugins

Challenge Types allow CTFd to support more than just the standard receive problem, submit string answer. They bundle the logic of a challenge into a static interface which can be implemented by CTF organizers.

allow you to create coding challenges using custom challenge types

As simple as it seems, this means every CTF can create entirely new concepts unique to their style atop CTFd’s core concepts of ease of use and customizability.

Built on top of these improvements in CTFd v1.0.5, we are releasing a much requested feature: dynamic scoring.

What is Dynamic Scoring?

Instead of standard challenges which reward a team a fixed amount of points, dynamically scored challenges start out at a fixed value and then lose value depending on how many solves it receives. Effectively, as the challenge receives more solves, the value of the challenge for every user decreases.

This mitigates the problem of challenge designers improperly evaluating a challenge’s difficulty and point valuation.

Most competitions implementing dynamic scoring allow only dynamic scoring. CTFd allows you to mix and match dynamic and standard challenges. All possible thanks to the improvements in the Challenge Type plugins system.

Challenge Types open up the CTF world to problems beyond offensive security.

For example, managed CTFd instances use Challenge Types to allow you to create problems like multiple choice questions and coding challenges in addition to standard problems. We think that this improvement to CTFd allows it to be used in bold new ways. We can’t wait to see kind of new and innovative challenges the CTF community creates.

Want to write CTFd plugins? Check out some examples and our documentation.

We can’t wait to see kind of new and innovate problems the CTF community creates.