Skip to content
CTF-Engine, written in go (WIP)
Go TypeScript HTML CSS JavaScript Makefile
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github
.vscode
cmd
frontend
html
internal
.gitignore
.gitlab-ci.yml
LICENSE
Makefile
README.md
api.yml
coinicon.svg added support for using coinicons Jan 30, 2020
demo.png
go.mod changed config format from json to yaml Feb 6, 2020
go.sum
icon.svg
wtfd.service

README.md

WTFd

License Latest stable version
Build Status Codecov Dependencies Repository Size
Last Commit Contributors Open Issues Open PRs Rawsec's CyberSecurity Inventory

a CTFd-like Server in go

demo

Configuration

At start, a config.yaml is generated. You should edit it with the settings you need

The Challenge info Dir shall look like that:

├── chall-1
│   ├── meta.yaml
│   ├── README.md
│   └── SOLUTION.md
├── chall-2
│   ├── meta.yaml
│   ├── README.md
│   └── SOLUTION.md

For each Challenge you need a meta.yaml, a README.md and a SOLUTION.md

The meta.yaml shall look like that:

points: <How many points the challenge should have>
uri: "<Protocol and user of your ssh Challenges (e.g. `ssh://chall-1@%s`>"
deps: [<Dependencies the Challenge has>]
flag: "<The flag>"
author: "<The author of the challenge>"
title: "(optional) the title of the challenge, else the directory name is used"

The README.md and SOLUTION.md are markdown files (syntax). The SOLUTION.md contents can only be seen by users who already solved the challenge

Building WTFd yourself

You need to have go, sqlite3 and yarn installed

git clone https://github.com/wtfd-tech/wtfd
cd wtfd
make

Running WTFd

Now you can finally start wtfd by downloading it from the releases, giving it permissions chmod +x wtfd and running it ./wtfd

WTFd is HTTP only, if you need HTTPS use a reverse proxy like Traefik or nginx

Development notes

To make working with the TypeScript easier, you can do

make js-run

to automatically compile the JS on changes

You can’t perform that action at this time.