CTFd
CTFd copied to clipboard
Challenge grouping idea
I have an idea for challenge grouping where you can group challenges and it would group them in a way that you could allow partial solves.
It's only a thought experiment but I think it's a good idea given how frequent the feature request of partial points or multi-stage challenges is.
Can you share more details? We are thinking about the same. Where would you suggest we share our research results and design options?
Why don’t you just share your ideas of how this could work in a comment here?
It doesn’t need to be a link, it can just be here are my ideas around how this would behave.
The ultimate problem is solving how a challenge can be worth different point values to different accounts.
Here is a sample description file from one of my friends.
challenge_name: a-sinking-feeling # [a-zA-Z0-9-]
challenge_author: rais
challenge_description: |- We're trying to probe new depths but we lost a secret key that we need to operate our submarine. Can you recover it?
challenge_tasks:
-
task_name: admin-access # [a-zA-Z0-9-] task_description: Find a way into the web interface for the submarine. task_flag: CTF{XXXXX} task_flag_isregex: false task_points: 10 task_tags: [web] task_maxattempts: 100 task_difficulty: easy
-
task_name: key-recovery # [a-zA-Z0-9-] task_description: Find the secret key for our submarine. task_flag: CTF{YYYY} task_flag_isregex: false task_points: 10 task_tags: [web, network] task_maxattempts: 100 task_difficulty: medium
challenge_files: [myfile1.png, myfile2.png]
challenge_backend: web # one of [web|infra|none]
Understand that there is also a docker-compose.yaml associated with this that is to be run for both tasks (challenges really). There was a ctfcli lookalike hacked for this that talks straight to the API, and has some hacks for the GUI. I think there may be a need for a ctfd plugin that adds a groups table, but I am not sure. Some students of mine are looking into it. BTW, this also talks to our container challenge plugin that runs the container on a K8s cluster. Can we squeeze this into the current challenge.yaml file, or is a different approach more relevant? I don't really want to be in the business of reinventing wheels.
We have mapped this to the current data model, but it replicates the same information over multiple challenges, as well as requires us to launch the same container for each 'task', which is redundant. Sorry, more questions than answers, but my friend states a reasonably clear need afaik, and has been doing so for the past 2 years.