@ctfpilot

CTF Pilot

Building fully automated CTF infrastructure

CTF Pilot

Building fully automated CTF infrastructure

Tip

Looking for the CTF Platform?
CTF Pilot's CTF Platform is called CTFp. You can find more information about CTFp in the CTFp repository.

Looking for how to develop challenges for the CTF Pilot platform?
You can find information about developing challenges in the challenge-toolkit, Challenge schema, and Challenges template repository.

Projects

CTF Pilot provides a number of projects that focus on different parts of the infrastructure.

ProjectDescriptionLatest Release
CTFpCTF Pilot's CTF PlatformGitHub Release
challenge-toolkitCTF Pilot's Challenge ToolkitGitHub Release
challenge-ciCTF Pilot's Challenge CIGitHub Release
kube-ctfChallenge manager by DownUnderCTFGitHub Release
ctfdCTF Pilot's CTFd configurationGitHub Release
ctfd-kubectf-pluginCTFd plugin for Kube-CTFGitHub Release
ctfd-managerCTF Pilot's CTFd ManagerGitHub Release
discord-botCTF Pilot's Discord BotGitHub Release
challenge-schemaCTF Pilot's Challenge SchemaGitHub Release
page-schemaCTF Pilot's Page SchemaGitHub Release
instancing-fallbackFallback service for challenge instancingGitHub Release
error-fallbackFallback service for handling errorsGitHub Release

To support the projects, CTF Pilot also provides the following templates:

ProjectDescription
challenges-templateCTF Pilot's Challenge Repository Template.
An example is available at challenges-example.
Challenges Project board TemplateCTF Pilot's GitHub Project board template for managing challenges.
An example is available at Challenges example.

Dependencies

The following diagram roughly illustrates the dependencies between the various CTF Pilot projects:

CTF Pilot Dependency Diagram

Architecture

The CTF Pilot infrastructure is designed around DevOps principles, utilizing GitOps workflows, Infrastructure as Code (IaC), and Continuous Integration/Continuous Deployment (CI/CD) pipelines.

The architecture is split into two main categories:

  1. CTF Platform: This includes the core CTF Platform (CTFp) and its associated services, such as the CTFd Manager, Discord Bot, and CTFd configuration.
  2. Challenge Management: This encompasses tools and services for challenge development, deployment, and management, including the Challenge Toolkit, Challenge CI, Kube-CTF, and related schemas.

CTF Platform Architecture

CTF Pilot Platform Architecture

The Platform architecture diagram illustrates how CTFp orchestrates the various components into the collected platform, which runs in Kubernetes.

To learn more about the CTF Platform architecture, please visit the CTFp repository.

Challenge Management Architecture

CTF Pilot Challenge Management Architecture

The Challenge Management architecture diagram illustrates how challenges are managed, continuously configured and deployed within the CTF Pilot infrastructure.

You can learn more about the challenge architecture in the CTFp repository, CTF Pilot's Challenge Toolkit, and CTF Pilot's Challenges Template. An example challenges repository can be found at CTF Pilot's Challenges example repository.

Limitations

CTF Pilot is not built to handle every CTF scenario. The system therefore has some limitations.

The primary limitations lie in the following areas:

  • Challenge instancing: CTF Pilot runs kube-ctf as its instancing manager, which only supports running challenges within Kubernetes. This means, that challenges must be build to run in Docker, and support running within a Kubernetes cluster context. Not all challenge types can be built to run within these constraints. Shared challenges may be deployed as static challenges, and have their infrastructure run in a seperate setup, allowing for more complex challenge types. However, this is not natively supported by CTF Pilot.
  • Challenge structure: CTF Pilot requires challenges to be structured according to the layout defined in the challenge-toolkit, with metadata defined according to the challenge-schema. This is an opinionated structure, which may not fit all challenge development workflows. Especially if you wish to split each challenge into its own repository, you may find it difficult to adapt the current structure to your needs. We are considering adding support for multi-repository challenge setups in the future.
  • Minimum size: CTF Pilot is designed to run in a Kubernetes cluster, which may introduce overhead for very small CTFs. It is therefore something that needs to be considered when deciding to use CTF Pilot for smaller events. We are planning to add support for running small scale clusters which would allow to run CTF Pilot in a more lightweight manner.

Contribution

We welcome contributions of all kinds—from code and documentation to bug reports and feedback!

CTF Pilot includes both open-source and dual-licensed projects. To maintain the ability to distribute contributions across all our licensing models, all code contributions require signing a Contributor License Agreement (CLA).

Please check the Contribution Guidelines (CONTRIBUTING.md) within the specific project repository you are working on for detailed guidelines. You can review the CLA here. CLA signing happens automatically when you create your first contribution.

Project management

In order to keep track of contributions, we use GitHub Projects for project management.
One project board is created for the whole CTF Pilot project, which includes all repositories.

This can be found at CTF Pilot Project Board.
The project board is the north star for the project, leading what should be worked on next.

To shortly summarize the status columns:

  • Specification: New ideas and proposals that are being specified.
  • Backlog: Approved tasks that have been specified but might need a bit more planning and refinement.
  • Ready: Tasks that are ready to be picked up by contributors.
  • In Progress: Tasks that are currently being worked on.
  • In Review: Tasks that are completed and are awaiting review.
  • Done: Completed tasks that have been merged and deployed.

Code of Conduct

We expect all contributors to adhere to our Code of Conduct to ensure a welcoming and inclusive environment for all.

Background

CTF Pilot started as a CTF Platform project, originating in Brunnerne.

CTF Pilot is owned and maintained by The0Mikkel.

Pinned Loading

  1. ctfpctfpPublic

    CTF Pilot's CTF Platform

    HCL 8 3

  2. challenge-schemachallenge-schemaPublic

    CTF Pilot's Challenge Schema

    1 2

  3. challenges-templatechallenges-templatePublic template

    CTF Pilot's Challenge Repository Template

  4. challenge-toolkitchallenge-toolkitPublic

    CTF Pilot's Challenge Toolkit

    Python 2

  5. challenge-cichallenge-ciPublic

    CTF Pilot's Challenge CI

    1

  6. ctfd-managerctfd-managerPublic

    CTF Pilot's CTFd Manager

    Go 1

Repositories

Showing 10 of 17 repositories

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
@ctfpilot

CTF Pilot

Building fully automated CTF infrastructure

CTF Pilot

Building fully automated CTF infrastructure

Tip

Looking for the CTF Platform?
CTF Pilot's CTF Platform is called CTFp. You can find more information about CTFp in the CTFp repository.

Looking for how to develop challenges for the CTF Pilot platform?
You can find information about developing challenges in the challenge-toolkit, Challenge schema, and Challenges template repository.

Projects

CTF Pilot provides a number of projects that focus on different parts of the infrastructure.

ProjectDescriptionLatest Release
CTFpCTF Pilot's CTF PlatformGitHub Release
challenge-toolkitCTF Pilot's Challenge ToolkitGitHub Release
challenge-ciCTF Pilot's Challenge CIGitHub Release
kube-ctfChallenge manager by DownUnderCTFGitHub Release
ctfdCTF Pilot's CTFd configurationGitHub Release
ctfd-kubectf-pluginCTFd plugin for Kube-CTFGitHub Release
ctfd-managerCTF Pilot's CTFd ManagerGitHub Release
discord-botCTF Pilot's Discord BotGitHub Release
challenge-schemaCTF Pilot's Challenge SchemaGitHub Release
page-schemaCTF Pilot's Page SchemaGitHub Release
instancing-fallbackFallback service for challenge instancingGitHub Release
error-fallbackFallback service for handling errorsGitHub Release

To support the projects, CTF Pilot also provides the following templates:

ProjectDescription
challenges-templateCTF Pilot's Challenge Repository Template.
An example is available at challenges-example.
Challenges Project board TemplateCTF Pilot's GitHub Project board template for managing challenges.
An example is available at Challenges example.

Dependencies

The following diagram roughly illustrates the dependencies between the various CTF Pilot projects:

CTF Pilot Dependency Diagram

Architecture

The CTF Pilot infrastructure is designed around DevOps principles, utilizing GitOps workflows, Infrastructure as Code (IaC), and Continuous Integration/Continuous Deployment (CI/CD) pipelines.

The architecture is split into two main categories:

  1. CTF Platform: This includes the core CTF Platform (CTFp) and its associated services, such as the CTFd Manager, Discord Bot, and CTFd configuration.
  2. Challenge Management: This encompasses tools and services for challenge development, deployment, and management, including the Challenge Toolkit, Challenge CI, Kube-CTF, and related schemas.

CTF Platform Architecture

CTF Pilot Platform Architecture

The Platform architecture diagram illustrates how CTFp orchestrates the various components into the collected platform, which runs in Kubernetes.

To learn more about the CTF Platform architecture, please visit the CTFp repository.

Challenge Management Architecture

CTF Pilot Challenge Management Architecture

The Challenge Management architecture diagram illustrates how challenges are managed, continuously configured and deployed within the CTF Pilot infrastructure.

You can learn more about the challenge architecture in the CTFp repository, CTF Pilot's Challenge Toolkit, and CTF Pilot's Challenges Template. An example challenges repository can be found at CTF Pilot's Challenges example repository.

Limitations

CTF Pilot is not built to handle every CTF scenario. The system therefore has some limitations.

The primary limitations lie in the following areas:

  • Challenge instancing: CTF Pilot runs kube-ctf as its instancing manager, which only supports running challenges within Kubernetes. This means, that challenges must be build to run in Docker, and support running within a Kubernetes cluster context. Not all challenge types can be built to run within these constraints. Shared challenges may be deployed as static challenges, and have their infrastructure run in a seperate setup, allowing for more complex challenge types. However, this is not natively supported by CTF Pilot.
  • Challenge structure: CTF Pilot requires challenges to be structured according to the layout defined in the challenge-toolkit, with metadata defined according to the challenge-schema. This is an opinionated structure, which may not fit all challenge development workflows. Especially if you wish to split each challenge into its own repository, you may find it difficult to adapt the current structure to your needs. We are considering adding support for multi-repository challenge setups in the future.
  • Minimum size: CTF Pilot is designed to run in a Kubernetes cluster, which may introduce overhead for very small CTFs. It is therefore something that needs to be considered when deciding to use CTF Pilot for smaller events. We are planning to add support for running small scale clusters which would allow to run CTF Pilot in a more lightweight manner.

Contribution

We welcome contributions of all kinds—from code and documentation to bug reports and feedback!

CTF Pilot includes both open-source and dual-licensed projects. To maintain the ability to distribute contributions across all our licensing models, all code contributions require signing a Contributor License Agreement (CLA).

Please check the Contribution Guidelines (CONTRIBUTING.md) within the specific project repository you are working on for detailed guidelines. You can review the CLA here. CLA signing happens automatically when you create your first contribution.

Project management

In order to keep track of contributions, we use GitHub Projects for project management.
One project board is created for the whole CTF Pilot project, which includes all repositories.

This can be found at CTF Pilot Project Board.
The project board is the north star for the project, leading what should be worked on next.

To shortly summarize the status columns:

  • Specification: New ideas and proposals that are being specified.
  • Backlog: Approved tasks that have been specified but might need a bit more planning and refinement.
  • Ready: Tasks that are ready to be picked up by contributors.
  • In Progress: Tasks that are currently being worked on.
  • In Review: Tasks that are completed and are awaiting review.
  • Done: Completed tasks that have been merged and deployed.

Code of Conduct

We expect all contributors to adhere to our Code of Conduct to ensure a welcoming and inclusive environment for all.

Background

CTF Pilot started as a CTF Platform project, originating in Brunnerne.

CTF Pilot is owned and maintained by The0Mikkel.

Pinned Loading

  1. ctfpctfpPublic

    CTF Pilot's CTF Platform

    HCL 8 3

  2. challenge-schemachallenge-schemaPublic

    CTF Pilot's Challenge Schema

    1 2

  3. challenges-templatechallenges-templatePublic template

    CTF Pilot's Challenge Repository Template

  4. challenge-toolkitchallenge-toolkitPublic

    CTF Pilot's Challenge Toolkit

    Python 2

  5. challenge-cichallenge-ciPublic

    CTF Pilot's Challenge CI

    1

  6. ctfd-managerctfd-managerPublic

    CTF Pilot's CTFd Manager

    Go 1

Repositories

Showing 10 of 17 repositories

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
@ctfpilot

CTF Pilot

Building fully automated CTF infrastructure

CTF Pilot

Building fully automated CTF infrastructure

Tip

Looking for the CTF Platform?
CTF Pilot's CTF Platform is called CTFp. You can find more information about CTFp in the CTFp repository.

Looking for how to develop challenges for the CTF Pilot platform?
You can find information about developing challenges in the challenge-toolkit, Challenge schema, and Challenges template repository.

Projects

CTF Pilot provides a number of projects that focus on different parts of the infrastructure.

ProjectDescriptionLatest Release
CTFpCTF Pilot's CTF PlatformGitHub Release
challenge-toolkitCTF Pilot's Challenge ToolkitGitHub Release
challenge-ciCTF Pilot's Challenge CIGitHub Release
kube-ctfChallenge manager by DownUnderCTFGitHub Release
ctfdCTF Pilot's CTFd configurationGitHub Release
ctfd-kubectf-pluginCTFd plugin for Kube-CTFGitHub Release
ctfd-managerCTF Pilot's CTFd ManagerGitHub Release
discord-botCTF Pilot's Discord BotGitHub Release
challenge-schemaCTF Pilot's Challenge SchemaGitHub Release
page-schemaCTF Pilot's Page SchemaGitHub Release
instancing-fallbackFallback service for challenge instancingGitHub Release
error-fallbackFallback service for handling errorsGitHub Release

To support the projects, CTF Pilot also provides the following templates:

ProjectDescription
challenges-templateCTF Pilot's Challenge Repository Template.
An example is available at challenges-example.
Challenges Project board TemplateCTF Pilot's GitHub Project board template for managing challenges.
An example is available at Challenges example.

Dependencies

The following diagram roughly illustrates the dependencies between the various CTF Pilot projects:

CTF Pilot Dependency Diagram

Architecture

The CTF Pilot infrastructure is designed around DevOps principles, utilizing GitOps workflows, Infrastructure as Code (IaC), and Continuous Integration/Continuous Deployment (CI/CD) pipelines.

The architecture is split into two main categories:

  1. CTF Platform: This includes the core CTF Platform (CTFp) and its associated services, such as the CTFd Manager, Discord Bot, and CTFd configuration.
  2. Challenge Management: This encompasses tools and services for challenge development, deployment, and management, including the Challenge Toolkit, Challenge CI, Kube-CTF, and related schemas.

CTF Platform Architecture

CTF Pilot Platform Architecture

The Platform architecture diagram illustrates how CTFp orchestrates the various components into the collected platform, which runs in Kubernetes.

To learn more about the CTF Platform architecture, please visit the CTFp repository.

Challenge Management Architecture

CTF Pilot Challenge Management Architecture

The Challenge Management architecture diagram illustrates how challenges are managed, continuously configured and deployed within the CTF Pilot infrastructure.

You can learn more about the challenge architecture in the CTFp repository, CTF Pilot's Challenge Toolkit, and CTF Pilot's Challenges Template. An example challenges repository can be found at CTF Pilot's Challenges example repository.

Limitations

CTF Pilot is not built to handle every CTF scenario. The system therefore has some limitations.

The primary limitations lie in the following areas:

  • Challenge instancing: CTF Pilot runs kube-ctf as its instancing manager, which only supports running challenges within Kubernetes. This means, that challenges must be build to run in Docker, and support running within a Kubernetes cluster context. Not all challenge types can be built to run within these constraints. Shared challenges may be deployed as static challenges, and have their infrastructure run in a seperate setup, allowing for more complex challenge types. However, this is not natively supported by CTF Pilot.
  • Challenge structure: CTF Pilot requires challenges to be structured according to the layout defined in the challenge-toolkit, with metadata defined according to the challenge-schema. This is an opinionated structure, which may not fit all challenge development workflows. Especially if you wish to split each challenge into its own repository, you may find it difficult to adapt the current structure to your needs. We are considering adding support for multi-repository challenge setups in the future.
  • Minimum size: CTF Pilot is designed to run in a Kubernetes cluster, which may introduce overhead for very small CTFs. It is therefore something that needs to be considered when deciding to use CTF Pilot for smaller events. We are planning to add support for running small scale clusters which would allow to run CTF Pilot in a more lightweight manner.

Contribution

We welcome contributions of all kinds—from code and documentation to bug reports and feedback!

CTF Pilot includes both open-source and dual-licensed projects. To maintain the ability to distribute contributions across all our licensing models, all code contributions require signing a Contributor License Agreement (CLA).

Please check the Contribution Guidelines (CONTRIBUTING.md) within the specific project repository you are working on for detailed guidelines. You can review the CLA here. CLA signing happens automatically when you create your first contribution.

Project management

In order to keep track of contributions, we use GitHub Projects for project management.
One project board is created for the whole CTF Pilot project, which includes all repositories.

This can be found at CTF Pilot Project Board.
The project board is the north star for the project, leading what should be worked on next.

To shortly summarize the status columns:

  • Specification: New ideas and proposals that are being specified.
  • Backlog: Approved tasks that have been specified but might need a bit more planning and refinement.
  • Ready: Tasks that are ready to be picked up by contributors.
  • In Progress: Tasks that are currently being worked on.
  • In Review: Tasks that are completed and are awaiting review.
  • Done: Completed tasks that have been merged and deployed.

Code of Conduct

We expect all contributors to adhere to our Code of Conduct to ensure a welcoming and inclusive environment for all.

Background

CTF Pilot started as a CTF Platform project, originating in Brunnerne.

CTF Pilot is owned and maintained by The0Mikkel.

Pinned Loading

  1. ctfpctfpPublic

    CTF Pilot's CTF Platform

    HCL 8 3

  2. challenge-schemachallenge-schemaPublic

    CTF Pilot's Challenge Schema

    1 2

  3. challenges-templatechallenges-templatePublic template

    CTF Pilot's Challenge Repository Template

  4. challenge-toolkitchallenge-toolkitPublic

    CTF Pilot's Challenge Toolkit

    Python 2

  5. challenge-cichallenge-ciPublic

    CTF Pilot's Challenge CI

    1

  6. ctfd-managerctfd-managerPublic

    CTF Pilot's CTFd Manager

    Go 1

Repositories

Showing 10 of 17 repositories

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
@ctfpilot

CTF Pilot

Building fully automated CTF infrastructure

CTF Pilot

Building fully automated CTF infrastructure

Tip

Looking for the CTF Platform?
CTF Pilot's CTF Platform is called CTFp. You can find more information about CTFp in the CTFp repository.

Looking for how to develop challenges for the CTF Pilot platform?
You can find information about developing challenges in the challenge-toolkit, Challenge schema, and Challenges template repository.

Projects

CTF Pilot provides a number of projects that focus on different parts of the infrastructure.

ProjectDescriptionLatest Release
CTFpCTF Pilot's CTF PlatformGitHub Release
challenge-toolkitCTF Pilot's Challenge ToolkitGitHub Release
challenge-ciCTF Pilot's Challenge CIGitHub Release
kube-ctfChallenge manager by DownUnderCTFGitHub Release
ctfdCTF Pilot's CTFd configurationGitHub Release
ctfd-kubectf-pluginCTFd plugin for Kube-CTFGitHub Release
ctfd-managerCTF Pilot's CTFd ManagerGitHub Release
discord-botCTF Pilot's Discord BotGitHub Release
challenge-schemaCTF Pilot's Challenge SchemaGitHub Release
page-schemaCTF Pilot's Page SchemaGitHub Release
instancing-fallbackFallback service for challenge instancingGitHub Release
error-fallbackFallback service for handling errorsGitHub Release

To support the projects, CTF Pilot also provides the following templates:

ProjectDescription
challenges-templateCTF Pilot's Challenge Repository Template.
An example is available at challenges-example.
Challenges Project board TemplateCTF Pilot's GitHub Project board template for managing challenges.
An example is available at Challenges example.

Dependencies

The following diagram roughly illustrates the dependencies between the various CTF Pilot projects:

CTF Pilot Dependency Diagram

Architecture

The CTF Pilot infrastructure is designed around DevOps principles, utilizing GitOps workflows, Infrastructure as Code (IaC), and Continuous Integration/Continuous Deployment (CI/CD) pipelines.

The architecture is split into two main categories:

  1. CTF Platform: This includes the core CTF Platform (CTFp) and its associated services, such as the CTFd Manager, Discord Bot, and CTFd configuration.
  2. Challenge Management: This encompasses tools and services for challenge development, deployment, and management, including the Challenge Toolkit, Challenge CI, Kube-CTF, and related schemas.

CTF Platform Architecture

CTF Pilot Platform Architecture

The Platform architecture diagram illustrates how CTFp orchestrates the various components into the collected platform, which runs in Kubernetes.

To learn more about the CTF Platform architecture, please visit the CTFp repository.

Challenge Management Architecture

CTF Pilot Challenge Management Architecture

The Challenge Management architecture diagram illustrates how challenges are managed, continuously configured and deployed within the CTF Pilot infrastructure.

You can learn more about the challenge architecture in the CTFp repository, CTF Pilot's Challenge Toolkit, and CTF Pilot's Challenges Template. An example challenges repository can be found at CTF Pilot's Challenges example repository.

Limitations

CTF Pilot is not built to handle every CTF scenario. The system therefore has some limitations.

The primary limitations lie in the following areas:

  • Challenge instancing: CTF Pilot runs kube-ctf as its instancing manager, which only supports running challenges within Kubernetes. This means, that challenges must be build to run in Docker, and support running within a Kubernetes cluster context. Not all challenge types can be built to run within these constraints. Shared challenges may be deployed as static challenges, and have their infrastructure run in a seperate setup, allowing for more complex challenge types. However, this is not natively supported by CTF Pilot.
  • Challenge structure: CTF Pilot requires challenges to be structured according to the layout defined in the challenge-toolkit, with metadata defined according to the challenge-schema. This is an opinionated structure, which may not fit all challenge development workflows. Especially if you wish to split each challenge into its own repository, you may find it difficult to adapt the current structure to your needs. We are considering adding support for multi-repository challenge setups in the future.
  • Minimum size: CTF Pilot is designed to run in a Kubernetes cluster, which may introduce overhead for very small CTFs. It is therefore something that needs to be considered when deciding to use CTF Pilot for smaller events. We are planning to add support for running small scale clusters which would allow to run CTF Pilot in a more lightweight manner.

Contribution

We welcome contributions of all kinds—from code and documentation to bug reports and feedback!

CTF Pilot includes both open-source and dual-licensed projects. To maintain the ability to distribute contributions across all our licensing models, all code contributions require signing a Contributor License Agreement (CLA).

Please check the Contribution Guidelines (CONTRIBUTING.md) within the specific project repository you are working on for detailed guidelines. You can review the CLA here. CLA signing happens automatically when you create your first contribution.

Project management

In order to keep track of contributions, we use GitHub Projects for project management.
One project board is created for the whole CTF Pilot project, which includes all repositories.

This can be found at CTF Pilot Project Board.
The project board is the north star for the project, leading what should be worked on next.

To shortly summarize the status columns:

  • Specification: New ideas and proposals that are being specified.
  • Backlog: Approved tasks that have been specified but might need a bit more planning and refinement.
  • Ready: Tasks that are ready to be picked up by contributors.
  • In Progress: Tasks that are currently being worked on.
  • In Review: Tasks that are completed and are awaiting review.
  • Done: Completed tasks that have been merged and deployed.

Code of Conduct

We expect all contributors to adhere to our Code of Conduct to ensure a welcoming and inclusive environment for all.

Background

CTF Pilot started as a CTF Platform project, originating in Brunnerne.

CTF Pilot is owned and maintained by The0Mikkel.

Pinned Loading

  1. ctfpctfpPublic

    CTF Pilot's CTF Platform

    HCL 8 3

  2. challenge-schemachallenge-schemaPublic

    CTF Pilot's Challenge Schema

    1 2

  3. challenges-templatechallenges-templatePublic template

    CTF Pilot's Challenge Repository Template

  4. challenge-toolkitchallenge-toolkitPublic

    CTF Pilot's Challenge Toolkit

    Python 2

  5. challenge-cichallenge-ciPublic

    CTF Pilot's Challenge CI

    1

  6. ctfd-managerctfd-managerPublic

    CTF Pilot's CTFd Manager

    Go 1

Repositories

Showing 10 of 17 repositories

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
@ctfpilot

CTF Pilot

Building fully automated CTF infrastructure

CTF Pilot

Building fully automated CTF infrastructure

Tip

Looking for the CTF Platform?
CTF Pilot's CTF Platform is called CTFp. You can find more information about CTFp in the CTFp repository.

Looking for how to develop challenges for the CTF Pilot platform?
You can find information about developing challenges in the challenge-toolkit, Challenge schema, and Challenges template repository.

Projects

CTF Pilot provides a number of projects that focus on different parts of the infrastructure.

ProjectDescriptionLatest Release
CTFpCTF Pilot's CTF PlatformGitHub Release
challenge-toolkitCTF Pilot's Challenge ToolkitGitHub Release
challenge-ciCTF Pilot's Challenge CIGitHub Release
kube-ctfChallenge manager by DownUnderCTFGitHub Release
ctfdCTF Pilot's CTFd configurationGitHub Release
ctfd-kubectf-pluginCTFd plugin for Kube-CTFGitHub Release
ctfd-managerCTF Pilot's CTFd ManagerGitHub Release
discord-botCTF Pilot's Discord BotGitHub Release
challenge-schemaCTF Pilot's Challenge SchemaGitHub Release
page-schemaCTF Pilot's Page SchemaGitHub Release
instancing-fallbackFallback service for challenge instancingGitHub Release
error-fallbackFallback service for handling errorsGitHub Release

To support the projects, CTF Pilot also provides the following templates:

ProjectDescription
challenges-templateCTF Pilot's Challenge Repository Template.
An example is available at challenges-example.
Challenges Project board TemplateCTF Pilot's GitHub Project board template for managing challenges.
An example is available at Challenges example.

Dependencies

The following diagram roughly illustrates the dependencies between the various CTF Pilot projects:

CTF Pilot Dependency Diagram

Architecture

The CTF Pilot infrastructure is designed around DevOps principles, utilizing GitOps workflows, Infrastructure as Code (IaC), and Continuous Integration/Continuous Deployment (CI/CD) pipelines.

The architecture is split into two main categories:

  1. CTF Platform: This includes the core CTF Platform (CTFp) and its associated services, such as the CTFd Manager, Discord Bot, and CTFd configuration.
  2. Challenge Management: This encompasses tools and services for challenge development, deployment, and management, including the Challenge Toolkit, Challenge CI, Kube-CTF, and related schemas.

CTF Platform Architecture

CTF Pilot Platform Architecture

The Platform architecture diagram illustrates how CTFp orchestrates the various components into the collected platform, which runs in Kubernetes.

To learn more about the CTF Platform architecture, please visit the CTFp repository.

Challenge Management Architecture

CTF Pilot Challenge Management Architecture

The Challenge Management architecture diagram illustrates how challenges are managed, continuously configured and deployed within the CTF Pilot infrastructure.

You can learn more about the challenge architecture in the CTFp repository, CTF Pilot's Challenge Toolkit, and CTF Pilot's Challenges Template. An example challenges repository can be found at CTF Pilot's Challenges example repository.

Limitations

CTF Pilot is not built to handle every CTF scenario. The system therefore has some limitations.

The primary limitations lie in the following areas:

  • Challenge instancing: CTF Pilot runs kube-ctf as its instancing manager, which only supports running challenges within Kubernetes. This means, that challenges must be build to run in Docker, and support running within a Kubernetes cluster context. Not all challenge types can be built to run within these constraints. Shared challenges may be deployed as static challenges, and have their infrastructure run in a seperate setup, allowing for more complex challenge types. However, this is not natively supported by CTF Pilot.
  • Challenge structure: CTF Pilot requires challenges to be structured according to the layout defined in the challenge-toolkit, with metadata defined according to the challenge-schema. This is an opinionated structure, which may not fit all challenge development workflows. Especially if you wish to split each challenge into its own repository, you may find it difficult to adapt the current structure to your needs. We are considering adding support for multi-repository challenge setups in the future.
  • Minimum size: CTF Pilot is designed to run in a Kubernetes cluster, which may introduce overhead for very small CTFs. It is therefore something that needs to be considered when deciding to use CTF Pilot for smaller events. We are planning to add support for running small scale clusters which would allow to run CTF Pilot in a more lightweight manner.

Contribution

We welcome contributions of all kinds—from code and documentation to bug reports and feedback!

CTF Pilot includes both open-source and dual-licensed projects. To maintain the ability to distribute contributions across all our licensing models, all code contributions require signing a Contributor License Agreement (CLA).

Please check the Contribution Guidelines (CONTRIBUTING.md) within the specific project repository you are working on for detailed guidelines. You can review the CLA here. CLA signing happens automatically when you create your first contribution.

Project management

In order to keep track of contributions, we use GitHub Projects for project management.
One project board is created for the whole CTF Pilot project, which includes all repositories.

This can be found at CTF Pilot Project Board.
The project board is the north star for the project, leading what should be worked on next.

To shortly summarize the status columns:

  • Specification: New ideas and proposals that are being specified.
  • Backlog: Approved tasks that have been specified but might need a bit more planning and refinement.
  • Ready: Tasks that are ready to be picked up by contributors.
  • In Progress: Tasks that are currently being worked on.
  • In Review: Tasks that are completed and are awaiting review.
  • Done: Completed tasks that have been merged and deployed.

Code of Conduct

We expect all contributors to adhere to our Code of Conduct to ensure a welcoming and inclusive environment for all.

Background

CTF Pilot started as a CTF Platform project, originating in Brunnerne.

CTF Pilot is owned and maintained by The0Mikkel.

Pinned Loading

  1. ctfpctfpPublic

    CTF Pilot's CTF Platform

    HCL 8 3

  2. challenge-schemachallenge-schemaPublic

    CTF Pilot's Challenge Schema

    1 2

  3. challenges-templatechallenges-templatePublic template

    CTF Pilot's Challenge Repository Template

  4. challenge-toolkitchallenge-toolkitPublic

    CTF Pilot's Challenge Toolkit

    Python 2

  5. challenge-cichallenge-ciPublic

    CTF Pilot's Challenge CI

    1

  6. ctfd-managerctfd-managerPublic

    CTF Pilot's CTFd Manager

    Go 1

Repositories

Showing 10 of 17 repositories

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
@ctfpilot

CTF Pilot

Building fully automated CTF infrastructure

CTF Pilot

Building fully automated CTF infrastructure

Tip

Looking for the CTF Platform?
CTF Pilot's CTF Platform is called CTFp. You can find more information about CTFp in the CTFp repository.

Looking for how to develop challenges for the CTF Pilot platform?
You can find information about developing challenges in the challenge-toolkit, Challenge schema, and Challenges template repository.

Projects

CTF Pilot provides a number of projects that focus on different parts of the infrastructure.

ProjectDescriptionLatest Release
CTFpCTF Pilot's CTF PlatformGitHub Release
challenge-toolkitCTF Pilot's Challenge ToolkitGitHub Release
challenge-ciCTF Pilot's Challenge CIGitHub Release
kube-ctfChallenge manager by DownUnderCTFGitHub Release
ctfdCTF Pilot's CTFd configurationGitHub Release
ctfd-kubectf-pluginCTFd plugin for Kube-CTFGitHub Release
ctfd-managerCTF Pilot's CTFd ManagerGitHub Release
discord-botCTF Pilot's Discord BotGitHub Release
challenge-schemaCTF Pilot's Challenge SchemaGitHub Release
page-schemaCTF Pilot's Page SchemaGitHub Release
instancing-fallbackFallback service for challenge instancingGitHub Release
error-fallbackFallback service for handling errorsGitHub Release

To support the projects, CTF Pilot also provides the following templates:

ProjectDescription
challenges-templateCTF Pilot's Challenge Repository Template.
An example is available at challenges-example.
Challenges Project board TemplateCTF Pilot's GitHub Project board template for managing challenges.
An example is available at Challenges example.

Dependencies

The following diagram roughly illustrates the dependencies between the various CTF Pilot projects:

CTF Pilot Dependency Diagram

Architecture

The CTF Pilot infrastructure is designed around DevOps principles, utilizing GitOps workflows, Infrastructure as Code (IaC), and Continuous Integration/Continuous Deployment (CI/CD) pipelines.

The architecture is split into two main categories:

  1. CTF Platform: This includes the core CTF Platform (CTFp) and its associated services, such as the CTFd Manager, Discord Bot, and CTFd configuration.
  2. Challenge Management: This encompasses tools and services for challenge development, deployment, and management, including the Challenge Toolkit, Challenge CI, Kube-CTF, and related schemas.

CTF Platform Architecture

CTF Pilot Platform Architecture

The Platform architecture diagram illustrates how CTFp orchestrates the various components into the collected platform, which runs in Kubernetes.

To learn more about the CTF Platform architecture, please visit the CTFp repository.

Challenge Management Architecture

CTF Pilot Challenge Management Architecture

The Challenge Management architecture diagram illustrates how challenges are managed, continuously configured and deployed within the CTF Pilot infrastructure.

You can learn more about the challenge architecture in the CTFp repository, CTF Pilot's Challenge Toolkit, and CTF Pilot's Challenges Template. An example challenges repository can be found at CTF Pilot's Challenges example repository.

Limitations

CTF Pilot is not built to handle every CTF scenario. The system therefore has some limitations.

The primary limitations lie in the following areas:

  • Challenge instancing: CTF Pilot runs kube-ctf as its instancing manager, which only supports running challenges within Kubernetes. This means, that challenges must be build to run in Docker, and support running within a Kubernetes cluster context. Not all challenge types can be built to run within these constraints. Shared challenges may be deployed as static challenges, and have their infrastructure run in a seperate setup, allowing for more complex challenge types. However, this is not natively supported by CTF Pilot.
  • Challenge structure: CTF Pilot requires challenges to be structured according to the layout defined in the challenge-toolkit, with metadata defined according to the challenge-schema. This is an opinionated structure, which may not fit all challenge development workflows. Especially if you wish to split each challenge into its own repository, you may find it difficult to adapt the current structure to your needs. We are considering adding support for multi-repository challenge setups in the future.
  • Minimum size: CTF Pilot is designed to run in a Kubernetes cluster, which may introduce overhead for very small CTFs. It is therefore something that needs to be considered when deciding to use CTF Pilot for smaller events. We are planning to add support for running small scale clusters which would allow to run CTF Pilot in a more lightweight manner.

Contribution

We welcome contributions of all kinds—from code and documentation to bug reports and feedback!

CTF Pilot includes both open-source and dual-licensed projects. To maintain the ability to distribute contributions across all our licensing models, all code contributions require signing a Contributor License Agreement (CLA).

Please check the Contribution Guidelines (CONTRIBUTING.md) within the specific project repository you are working on for detailed guidelines. You can review the CLA here. CLA signing happens automatically when you create your first contribution.

Project management

In order to keep track of contributions, we use GitHub Projects for project management.
One project board is created for the whole CTF Pilot project, which includes all repositories.

This can be found at CTF Pilot Project Board.
The project board is the north star for the project, leading what should be worked on next.

To shortly summarize the status columns:

  • Specification: New ideas and proposals that are being specified.
  • Backlog: Approved tasks that have been specified but might need a bit more planning and refinement.
  • Ready: Tasks that are ready to be picked up by contributors.
  • In Progress: Tasks that are currently being worked on.
  • In Review: Tasks that are completed and are awaiting review.
  • Done: Completed tasks that have been merged and deployed.

Code of Conduct

We expect all contributors to adhere to our Code of Conduct to ensure a welcoming and inclusive environment for all.

Background

CTF Pilot started as a CTF Platform project, originating in Brunnerne.

CTF Pilot is owned and maintained by The0Mikkel.

Pinned Loading

  1. ctfpctfpPublic

    CTF Pilot's CTF Platform

    HCL 8 3

  2. challenge-schemachallenge-schemaPublic

    CTF Pilot's Challenge Schema

    1 2

  3. challenges-templatechallenges-templatePublic template

    CTF Pilot's Challenge Repository Template

  4. challenge-toolkitchallenge-toolkitPublic

    CTF Pilot's Challenge Toolkit

    Python 2

  5. challenge-cichallenge-ciPublic

    CTF Pilot's Challenge CI

    1

  6. ctfd-managerctfd-managerPublic

    CTF Pilot's CTFd Manager

    Go 1

Repositories

Showing 10 of 17 repositories

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
@ctfpilot

CTF Pilot

Building fully automated CTF infrastructure

CTF Pilot

Building fully automated CTF infrastructure

Tip

Looking for the CTF Platform?
CTF Pilot's CTF Platform is called CTFp. You can find more information about CTFp in the CTFp repository.

Looking for how to develop challenges for the CTF Pilot platform?
You can find information about developing challenges in the challenge-toolkit, Challenge schema, and Challenges template repository.

Projects

CTF Pilot provides a number of projects that focus on different parts of the infrastructure.

ProjectDescriptionLatest Release
CTFpCTF Pilot's CTF PlatformGitHub Release
challenge-toolkitCTF Pilot's Challenge ToolkitGitHub Release
challenge-ciCTF Pilot's Challenge CIGitHub Release
kube-ctfChallenge manager by DownUnderCTFGitHub Release
ctfdCTF Pilot's CTFd configurationGitHub Release
ctfd-kubectf-pluginCTFd plugin for Kube-CTFGitHub Release
ctfd-managerCTF Pilot's CTFd ManagerGitHub Release
discord-botCTF Pilot's Discord BotGitHub Release
challenge-schemaCTF Pilot's Challenge SchemaGitHub Release
page-schemaCTF Pilot's Page SchemaGitHub Release
instancing-fallbackFallback service for challenge instancingGitHub Release
error-fallbackFallback service for handling errorsGitHub Release

To support the projects, CTF Pilot also provides the following templates:

ProjectDescription
challenges-templateCTF Pilot's Challenge Repository Template.
An example is available at challenges-example.
Challenges Project board TemplateCTF Pilot's GitHub Project board template for managing challenges.
An example is available at Challenges example.

Dependencies

The following diagram roughly illustrates the dependencies between the various CTF Pilot projects:

CTF Pilot Dependency Diagram

Architecture

The CTF Pilot infrastructure is designed around DevOps principles, utilizing GitOps workflows, Infrastructure as Code (IaC), and Continuous Integration/Continuous Deployment (CI/CD) pipelines.

The architecture is split into two main categories:

  1. CTF Platform: This includes the core CTF Platform (CTFp) and its associated services, such as the CTFd Manager, Discord Bot, and CTFd configuration.
  2. Challenge Management: This encompasses tools and services for challenge development, deployment, and management, including the Challenge Toolkit, Challenge CI, Kube-CTF, and related schemas.

CTF Platform Architecture

CTF Pilot Platform Architecture

The Platform architecture diagram illustrates how CTFp orchestrates the various components into the collected platform, which runs in Kubernetes.

To learn more about the CTF Platform architecture, please visit the CTFp repository.

Challenge Management Architecture

CTF Pilot Challenge Management Architecture

The Challenge Management architecture diagram illustrates how challenges are managed, continuously configured and deployed within the CTF Pilot infrastructure.

You can learn more about the challenge architecture in the CTFp repository, CTF Pilot's Challenge Toolkit, and CTF Pilot's Challenges Template. An example challenges repository can be found at CTF Pilot's Challenges example repository.

Limitations

CTF Pilot is not built to handle every CTF scenario. The system therefore has some limitations.

The primary limitations lie in the following areas:

  • Challenge instancing: CTF Pilot runs kube-ctf as its instancing manager, which only supports running challenges within Kubernetes. This means, that challenges must be build to run in Docker, and support running within a Kubernetes cluster context. Not all challenge types can be built to run within these constraints. Shared challenges may be deployed as static challenges, and have their infrastructure run in a seperate setup, allowing for more complex challenge types. However, this is not natively supported by CTF Pilot.
  • Challenge structure: CTF Pilot requires challenges to be structured according to the layout defined in the challenge-toolkit, with metadata defined according to the challenge-schema. This is an opinionated structure, which may not fit all challenge development workflows. Especially if you wish to split each challenge into its own repository, you may find it difficult to adapt the current structure to your needs. We are considering adding support for multi-repository challenge setups in the future.
  • Minimum size: CTF Pilot is designed to run in a Kubernetes cluster, which may introduce overhead for very small CTFs. It is therefore something that needs to be considered when deciding to use CTF Pilot for smaller events. We are planning to add support for running small scale clusters which would allow to run CTF Pilot in a more lightweight manner.

Contribution

We welcome contributions of all kinds—from code and documentation to bug reports and feedback!

CTF Pilot includes both open-source and dual-licensed projects. To maintain the ability to distribute contributions across all our licensing models, all code contributions require signing a Contributor License Agreement (CLA).

Please check the Contribution Guidelines (CONTRIBUTING.md) within the specific project repository you are working on for detailed guidelines. You can review the CLA here. CLA signing happens automatically when you create your first contribution.

Project management

In order to keep track of contributions, we use GitHub Projects for project management.
One project board is created for the whole CTF Pilot project, which includes all repositories.

This can be found at CTF Pilot Project Board.
The project board is the north star for the project, leading what should be worked on next.

To shortly summarize the status columns:

  • Specification: New ideas and proposals that are being specified.
  • Backlog: Approved tasks that have been specified but might need a bit more planning and refinement.
  • Ready: Tasks that are ready to be picked up by contributors.
  • In Progress: Tasks that are currently being worked on.
  • In Review: Tasks that are completed and are awaiting review.
  • Done: Completed tasks that have been merged and deployed.

Code of Conduct

We expect all contributors to adhere to our Code of Conduct to ensure a welcoming and inclusive environment for all.

Background

CTF Pilot started as a CTF Platform project, originating in Brunnerne.

CTF Pilot is owned and maintained by The0Mikkel.

Pinned Loading

  1. ctfpctfpPublic

    CTF Pilot's CTF Platform

    HCL 8 3

  2. challenge-schemachallenge-schemaPublic

    CTF Pilot's Challenge Schema

    1 2

  3. challenges-templatechallenges-templatePublic template

    CTF Pilot's Challenge Repository Template

  4. challenge-toolkitchallenge-toolkitPublic

    CTF Pilot's Challenge Toolkit

    Python 2

  5. challenge-cichallenge-ciPublic

    CTF Pilot's Challenge CI

    1

  6. ctfd-managerctfd-managerPublic

    CTF Pilot's CTFd Manager

    Go 1

Repositories

Showing 10 of 17 repositories

Top languages

Loading…

Most used topics

Loading…

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
@ctfpilot

CTF Pilot

Building fully automated CTF infrastructure

CTF Pilot

Building fully automated CTF infrastructure

Tip

Looking for the CTF Platform?
CTF Pilot's CTF Platform is called CTFp. You can find more information about CTFp in the CTFp repository.

Looking for how to develop challenges for the CTF Pilot platform?
You can find information about developing challenges in the challenge-toolkit, Challenge schema, and Challenges template repository.

Projects

CTF Pilot provides a number of projects that focus on different parts of the infrastructure.

ProjectDescriptionLatest Release
CTFpCTF Pilot's CTF PlatformGitHub Release
challenge-toolkitCTF Pilot's Challenge ToolkitGitHub Release
challenge-ciCTF Pilot's Challenge CIGitHub Release
kube-ctfChallenge manager by DownUnderCTFGitHub Release
ctfdCTF Pilot's CTFd configurationGitHub Release
ctfd-kubectf-pluginCTFd plugin for Kube-CTFGitHub Release
ctfd-managerCTF Pilot's CTFd ManagerGitHub Release
discord-botCTF Pilot's Discord BotGitHub Release
challenge-schemaCTF Pilot's Challenge SchemaGitHub Release
page-schemaCTF Pilot's Page SchemaGitHub Release
instancing-fallbackFallback service for challenge instancingGitHub Release
error-fallbackFallback service for handling errorsGitHub Release

To support the projects, CTF Pilot also provides the following templates:

ProjectDescription
challenges-templateCTF Pilot's Challenge Repository Template.
An example is available at challenges-example.
Challenges Project board TemplateCTF Pilot's GitHub Project board template for managing challenges.
An example is available at Challenges example.

Dependencies

The following diagram roughly illustrates the dependencies between the various CTF Pilot projects:

CTF Pilot Dependency Diagram

Architecture

The CTF Pilot infrastructure is designed around DevOps principles, utilizing GitOps workflows, Infrastructure as Code (IaC), and Continuous Integration/Continuous Deployment (CI/CD) pipelines.

The architecture is split into two main categories:

  1. CTF Platform: This includes the core CTF Platform (CTFp) and its associated services, such as the CTFd Manager, Discord Bot, and CTFd configuration.
  2. Challenge Management: This encompasses tools and services for challenge development, deployment, and management, including the Challenge Toolkit, Challenge CI, Kube-CTF, and related schemas.

CTF Platform Architecture

CTF Pilot Platform Architecture

The Platform architecture diagram illustrates how CTFp orchestrates the various components into the collected platform, which runs in Kubernetes.

To learn more about the CTF Platform architecture, please visit the CTFp repository.

Challenge Management Architecture

CTF Pilot Challenge Management Architecture

The Challenge Management architecture diagram illustrates how challenges are managed, continuously configured and deployed within the CTF Pilot infrastructure.

You can learn more about the challenge architecture in the CTFp repository, CTF Pilot's Challenge Toolkit, and CTF Pilot's Challenges Template. An example challenges repository can be found at CTF Pilot's Challenges example repository.

Limitations

CTF Pilot is not built to handle every CTF scenario. The system therefore has some limitations.

The primary limitations lie in the following areas:

  • Challenge instancing: CTF Pilot runs kube-ctf as its instancing manager, which only supports running challenges within Kubernetes. This means, that challenges must be build to run in Docker, and support running within a Kubernetes cluster context. Not all challenge types can be built to run within these constraints. Shared challenges may be deployed as static challenges, and have their infrastructure run in a seperate setup, allowing for more complex challenge types. However, this is not natively supported by CTF Pilot.
  • Challenge structure: CTF Pilot requires challenges to be structured according to the layout defined in the challenge-toolkit, with metadata defined according to the challenge-schema. This is an opinionated structure, which may not fit all challenge development workflows. Especially if you wish to split each challenge into its own repository, you may find it difficult to adapt the current structure to your needs. We are considering adding support for multi-repository challenge setups in the future.
  • Minimum size: CTF Pilot is designed to run in a Kubernetes cluster, which may introduce overhead for very small CTFs. It is therefore something that needs to be considered when deciding to use CTF Pilot for smaller events. We are planning to add support for running small scale clusters which would allow to run CTF Pilot in a more lightweight manner.

Contribution

We welcome contributions of all kinds—from code and documentation to bug reports and feedback!

CTF Pilot includes both open-source and dual-licensed projects. To maintain the ability to distribute contributions across all our licensing models, all code contributions require signing a Contributor License Agreement (CLA).

Please check the Contribution Guidelines (CONTRIBUTING.md) within the specific project repository you are working on for detailed guidelines. You can review the CLA here. CLA signing happens automatically when you create your first contribution.

Project management

In order to keep track of contributions, we use GitHub Projects for project management.
One project board is created for the whole CTF Pilot project, which includes all repositories.

This can be found at CTF Pilot Project Board.
The project board is the north star for the project, leading what should be worked on next.

To shortly summarize the status columns:

  • Specification: New ideas and proposals that are being specified.
  • Backlog: Approved tasks that have been specified but might need a bit more planning and refinement.
  • Ready: Tasks that are ready to be picked up by contributors.
  • In Progress: Tasks that are currently being worked on.
  • In Review: Tasks that are completed and are awaiting review.
  • Done: Completed tasks that have been merged and deployed.

Code of Conduct

We expect all contributors to adhere to our Code of Conduct to ensure a welcoming and inclusive environment for all.

Background

CTF Pilot started as a CTF Platform project, originating in Brunnerne.

CTF Pilot is owned and maintained by The0Mikkel.

Pinned Loading

  1. ctfpctfpPublic

    CTF Pilot's CTF Platform

    HCL 8 3

  2. challenge-schemachallenge-schemaPublic

    CTF Pilot's Challenge Schema

    1 2

  3. challenges-templatechallenges-templatePublic template

    CTF Pilot's Challenge Repository Template

  4. challenge-toolkitchallenge-toolkitPublic

    CTF Pilot's Challenge Toolkit

    Python 2

  5. challenge-cichallenge-ciPublic

    CTF Pilot's Challenge CI

    1

  6. ctfd-managerctfd-managerPublic

    CTF Pilot's CTFd Manager

    Go 1

Repositories

Showing 10 of 17 repositories

Top languages

Loading…

Most used topics

Loading…