Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
4e7df1c
Create challenge: Where robots cannot search by The Mikkel
The0mikkel Dec 20, 2025
ddc6405
Add Where robots cannot search from BrunnerCTF 2025
The0mikkel Dec 20, 2025
a002a7e
Update CI jobs to match up-to-date challenge-ci
The0mikkel Dec 20, 2025
963f019
Update workflows to use challenge-ci version 1.0.1
The0mikkel Dec 20, 2025
c9fe01d
Trigger rebuild of where-robots-cannot-search
The0mikkel Dec 20, 2025
9bd142d
Update workflows to use challenge-ci version 1.0.2
The0mikkel Dec 20, 2025
e1db9d7
Trigger rebuild of where-robots-cannot-search
The0mikkel Dec 20, 2025
be9cbf4
CI: Update challenges [skip ci]
github-actions[bot] Dec 20, 2025
abc5bde
Merge pull request #1 from ctfpilot/challenge/where-robots-cannot-search
The0mikkel Dec 20, 2025
f8102f0
CI: Update challenges [skip ci]
github-actions[bot] Dec 20, 2025
d2e8b2f
Create challenge: Oh look, A flag! by The Mikkel
The0mikkel Dec 20, 2025
df5d5e4
docs: Add project board section to README for tracking challenge prog…
The0mikkel Dec 20, 2025
3784b15
docs: Update README with important usage information for the challeng…
The0mikkel Dec 20, 2025
748d726
Update challenge documentation and add handout file for "Oh look, A f…
The0mikkel Dec 20, 2025
57ec6e3
docs: Enhance README with detailed challenge description and context
The0mikkel Dec 20, 2025
3c1b2c9
CI: Update challenges [skip ci]
github-actions[bot] Dec 20, 2025
8d9834e
Merge branch 'develop' into challenge/oh-look-a-flag
The0mikkel Dec 20, 2025
4d7a20e
CI: Update challenges [skip ci]
github-actions[bot] Dec 20, 2025
f938977
Trigger rebuild of oh-look-a-flag
The0mikkel Dec 20, 2025
72f0d86
CI: Update challenges [skip ci]
github-actions[bot] Dec 20, 2025
2549705
Merge pull request #4 from ctfpilot/challenge/oh-look-a-flag
The0mikkel Dec 20, 2025
4f82191
CI: Update challenges [skip ci]
github-actions[bot] Dec 20, 2025
546ba5b
CI: Update challenges [skip ci]
github-actions[bot] Dec 20, 2025
eee95ac
Remove test/example challenge
The0mikkel Dec 20, 2025
6d3dc91
Update toolkit
The0mikkel Dec 20, 2025
8e0547a
Update templates from toolkit
The0mikkel Dec 20, 2025
4d94e49
Create challenge: The shared site by The Mikkel
The0mikkel Dec 20, 2025
c90814a
Add the shared site challenge
The0mikkel Dec 20, 2025
54d04cb
CI: Update challenges [skip ci]
github-actions[bot] Dec 20, 2025
790cbbd
Merge pull request #9 from ctfpilot/challenge/the-shared-site
The0mikkel Dec 20, 2025
ba27ac7
CI: Update challenges [skip ci]
github-actions[bot] Dec 20, 2025
80cfb6b
Add tags to challenges: "Oh look, A flag!" and "Where robots cannot s…
The0mikkel Dec 20, 2025
90215c6
CI: Update challenges [skip ci]
github-actions[bot] Dec 20, 2025
8895208
CI: Update challenges [skip ci]
github-actions[bot] Dec 20, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/configure-challs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ on:
workflow_dispatch:

jobs:
create_challenge:
name: Create challenge
uses: ctfpilot/challenge-ci/.github/workflows/[email protected].0
configure_challenges:
name: Configure challenges
uses: ctfpilot/challenge-ci/.github/workflows/[email protected].2
permissions:
contents: write
packages: write
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/configure-pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ on:
jobs:
create_pages:
name: Create pages
uses: ctfpilot/challenge-ci/.github/workflows/[email protected].0
uses: ctfpilot/challenge-ci/.github/workflows/[email protected].2
permissions:
contents: write
with:
runs-on: "ubuntu-latest"
toolkit-path: "./challenge-toolkit/"
toolkit-path: "./challenge-toolkit/"
2 changes: 1 addition & 1 deletion .github/workflows/create-chall.yml
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ on:
jobs:
create_challenge:
name: Create challenge
uses: ctfpilot/challenge-ci/.github/workflows/[email protected].0
uses: ctfpilot/challenge-ci/.github/workflows/[email protected].2
permissions:
contents: write
pull-requests: write
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/render-templates.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ on:
jobs:
render_templates:
name: Render all templates
uses: ctfpilot/challenge-ci/.github/workflows/[email protected].0
uses: ctfpilot/challenge-ci/.github/workflows/[email protected].2
permissions:
contents: write
packages: write
Expand Down
13 changes: 12 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
# Challenges example repository

This repository contains an example challenges repository, for CTF Pilot's Challenge Repository Template
> [!IMPORTANT]
> This is an example repository of the [CTF Pilot's Challenge Repository Template](https://github.com/ctfpilot/challenges-template).
> It is intended to be used as a reference for creating your own challenges repository, and testing the infrastructure with some example challenges.
>
> **Please use the [Challenge Repository Template](https://github.com/ctfpilot/challenges-template) if you want to create your own challenges repository.**

This repository contains an example challenges repository, for [CTF Pilot's Challenge Repository Template](https://github.com/ctfpilot/challenges-template).

## Challenge toolkit

Expand Down Expand Up @@ -205,3 +211,8 @@ To create a new challenge, follow these steps:
7. Once the workflow is complete, a new branch, pull request, and issue will be created for the challenge.

If errors occur during the workflow execution, please reach out to the infrastructure team for assistance. Logs from the workflow can be found in the `Actions` tab of the repository.

## Project board

A project board is available to track the progress of challenges.
This can be found at: [Challenges Project board](https://github.com/orgs/ctfpilot/projects/2)
6 changes: 6 additions & 0 deletions challenges/forensics/oh-look-a-flag/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Oh look, A flag!

This challenge is an example challenge for testing the handout system.

It contains a single text file, which contains a flag.
In the infrastructure, this file should be automatically zipped into a handout file, and uploaded to the platform.
Original file line number Diff line number Diff line change
@@ -1,23 +1,26 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/ctfpilot/challenge-schema/refs/heads/main/schema.json

enabled: true
name: Example
slug: example
name: Oh look, A flag!
slug: oh-look-a-flag
author: The Mikkel
category: test
difficulty: easy
tags: []
category: forensics
difficulty: beginner
tags: [
Static,
Example
]
type: static
instanced_type: none
instanced_name: null
instanced_subdomains: []
connection: null
flag:
- flag: test{demo}
- flag: ctfpilot{handouts-may-contain-flag}
case_sensitive: false
points: 1000
decay: 75
min_points: 10
min_points: 100
description_location: description.md
handout_dir: handout

6 changes: 6 additions & 0 deletions challenges/forensics/oh-look-a-flag/description.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Oh look, A flag!

**Difficulty:** Beginner
**Author:** The Mikkel

Handouts may contain flags, but does this one?
2 changes: 2 additions & 0 deletions challenges/forensics/oh-look-a-flag/handout/handout.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Alright, here is the flag:
ctfpilot{handouts-may-contain-flag}
6 changes: 6 additions & 0 deletions challenges/forensics/oh-look-a-flag/k8s/config/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
apiVersion: v2
name: configmap-oh-look-a-flag
version: 1.5.0
description: Challenge configmap for oh-look-a-flag in category forensics
appVersion: "1.5.0"
type: application
Original file line number Diff line number Diff line change
@@ -1,53 +1,56 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: "challenge-test-example"
name: "challenge-forensics-oh-look-a-flag"
labels:
challenges.ctfpilot.com/type: "none"
challenges.ctfpilot.com/name: "example"
challenges.ctfpilot.com/category: "test"
challenges.ctfpilot.com/name: "oh-look-a-flag"
challenges.ctfpilot.com/category: "forensics"
challenges.ctfpilot.com/version: "5"
challenges.ctfpilot.com/configmap: "challenge-config"
challenges.ctfpilot.com/enabled: "true"
ctfpilot.com/component: "challenge-config"
data:
name: "example"
path: "challenges/test/example"
name: "oh-look-a-flag"
path: "challenges/forensics/oh-look-a-flag"
repository: "ctfpilot/challenges-example"
generated_at: "2025-12-20 10:41:26"
generated_at: "2025-12-20 15:54:13"
challenge: |
{
"$schema": "https://raw.githubusercontent.com/ctfpilot/challenge-schema/refs/heads/main/schema.json",
"enabled": true,
"name": "Example",
"slug": "example",
"name": "Oh look, A flag!",
"slug": "oh-look-a-flag",
"author": "The Mikkel",
"category": "test",
"difficulty": "easy",
"tags": [],
"category": "forensics",
"difficulty": "beginner",
"tags": [
"Static",
"Example"
],
"type": "static",
"instanced_type": "none",
"instanced_name": null,
"instanced_subdomains": [],
"connection": null,
"flag": [
{
"flag": "test{demo}",
"flag": "ctfpilot{handouts-may-contain-flag}",
"case_sensitive": false
}
],
"points": 1000,
"decay": 75,
"min_points": 10,
"min_points": 100,
"description_location": "description.md",
"handout_dir": "handout"
}

description: |
# Example
# Oh look, A flag!

**Difficulty:** Easy
**Difficulty:** Beginner
**Author:** The Mikkel

*Add challenge description here*
Handouts may contain flags, but does this one?

Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
challenge:
enabled: true
name: example
category: test
name: oh-look-a-flag
category: forensics
type: none
version: 5
path: challenges/test/example
path: challenges/forensics/oh-look-a-flag
kubectf:
expires: 3600
availableAt: 0
Expand Down
Binary file not shown.
3 changes: 3 additions & 0 deletions challenges/forensics/oh-look-a-flag/solution/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Solution

Download the handout file and extract it. Inside, you will find a text file containing the flag.
4 changes: 0 additions & 4 deletions challenges/test/example/README.md

This file was deleted.

6 changes: 0 additions & 6 deletions challenges/test/example/description.md

This file was deleted.

6 changes: 0 additions & 6 deletions challenges/test/example/k8s/config/Chart.yaml

This file was deleted.

3 changes: 0 additions & 3 deletions challenges/test/example/solution/README.md

This file was deleted.

3 changes: 3 additions & 0 deletions challenges/web/the-shared-site/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# The shared site

This challenge is an example challenge, that is meant to demonstrate how shared challenges work.
30 changes: 30 additions & 0 deletions challenges/web/the-shared-site/challenge.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/ctfpilot/challenge-schema/refs/heads/main/schema.json

enabled: true
name: The shared site
slug: the-shared-site
author: The Mikkel
category: web
difficulty: beginner
tags: [
Shared,
Example
]
type: shared
instanced_type: web
instanced_name: null
instanced_subdomains: []
connection: null
flag:
- flag: ctfpilot{thanks-for-visiting-the-shared-site}
case_sensitive: false
points: 1000
decay: 75
min_points: 100
description_location: description.md
handout_dir: handout
dockerfile_locations:
- location: src/Dockerfile
context: src/
identifier: null

6 changes: 6 additions & 0 deletions challenges/web/the-shared-site/description.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# The shared site

**Difficulty:** Beginner
**Author:** The Mikkel

The site may contain the precious object you are looking for.
2 changes: 2 additions & 0 deletions challenges/web/the-shared-site/handout/.gitkeep
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# This file is used to keep the directory in the repository.
# This directory is used to store files that are handed out, for the challenge. The files are automatically zipped and copied to the files directory.
6 changes: 6 additions & 0 deletions challenges/web/the-shared-site/k8s/challenge/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
apiVersion: v2
name: the-shared-site
version: 1.3.0
description: Challenge the-shared-site in category web
appVersion: "1.3.0"
type: application
Loading