It is a Capture The Flag framework based on CTFd focusing on ease of use and customizability. It comes with everything you need to run a CTF and it's easy to customize with plugins and themes.
- Create your own challenges, categories, hints, and flags from the Admin Interface
- Dynamic Scoring Challenges
- Unlockable challenge support
- Challenge plugin architecture to create your own custom challenges
- Static & Regex based flags
- Custom flag plugins
- Unlockable hints
- File uploads to the server or an Amazon S3-compatible backend
- Limit challenge attempts & hide challenges
- Automatic bruteforce protection
- Individual and Team based competitions
- Have users play on their own or form teams to play together
- Scoreboard with automatic tie resolution
- Hide Scores from the public
- Freeze Scores at a specific time
- Scoregraphs comparing the top 10 teams and team progress graphs
- Markdown content management system
- SMTP + Mailgun email support
- Email confirmation support
- Forgot password support
- Automatic competition starting and ending
- Team management, hiding, and banning
- Importing and Exporting of CTF data for archival
- Install dependencies:
pip install -r requirements.txt- You can also use the
prepare.shscript to install system dependencies using apt.
- You can also use the
- Modify HostYourCTF/config.ini to your liking.
- Use
python serve.pyorflask runin a terminal to drop into debug mode.
You can use the auto-generated Docker images with the following command:
docker run -p 8000:8000 -it ctfd/ctfd
Or you can use Docker Compose with the following command from the source repository:
docker compose up
az group create --name ctfd-test-rg --location centralindiaReplace <image_tag> with latest or your specific version (e.g., v2).
az container create \
--resource-group ctfd-test-rg \
--name ctfd-test \
--image prafullanand/ctfd:<image_tag> \
--ports 8000 \
--dns-name-label ctfdtest$RANDOM \
--location centralindia \
--os-type Linux \
--cpu 1 \
--memory 1.5az container show --resource-group ctfd-test-rg --name ctfd-test --query ipAddress.fqdn -o tsvChange CPU or Memory: You must delete and recreate the container group to resize:
az container delete --resource-group ctfd-test-rg --name ctfd-test --yes
# Re-run Create command with new --cpu or --memory valuesPause/Stop (Save Credits): ACI billing continues as long as the container exists. Delete it to stop billing:
az container delete --resource-group ctfd-test-rg --name ctfd-test --yesRestart or View Logs:
az container restart --resource-group ctfd-test-rg --name ctfd-test
az container logs --resource-group ctfd-test-rg --name ctfd-testCheck Status:
az container show --resource-group ctfd-test-rg --name ctfd-test --query instanceView.stateAfter deployment, update your import_challenges.py with the new URL:
sed -i 's|CTFd_URL = ".*"|CTFd_URL = "http://<your-public-azure-url>:8000/"|' import_challenges.py
sed -i 's|ADMIN_TOKEN = ".*"|ADMIN_TOKEN = "ctfd_NEW_TOKEN"|' import_challenges.py