some docs
parent
cf39e80162
commit
189c01c639
17
README.md
17
README.md
|
@ -1,11 +1,23 @@
|
|||
# ctf-platform
|
||||
# Flagbase
|
||||
This is the platform for TJCTF. It's (what I think is) the best of the MITRE,
|
||||
CTFd, and picoCTF platforms rolled up into a Flask application.
|
||||
|
||||
I'm bad at naming things.
|
||||
|
||||
## Installation
|
||||
You're going to want to edit `config.py`. The variable names should be fairly
|
||||
self-explanatory.
|
||||
|
||||
You're going to want to create a file called `secrets`. It will look like this:
|
||||
|
||||
```yml
|
||||
mailgun_url: https://api.mailgun.net/v3/tjctf.org
|
||||
mailgun_key: key-asdflkjasdhflkjsdahflkhsdaklfjhasd
|
||||
recaptcha_key: asdlkfjhasdlkjfhlsdakjfh
|
||||
recaptcha_secret: sdakjfhsdalkfjhsdalkfjh
|
||||
key: this can be anything you want, it is your flask secret_key
|
||||
```
|
||||
|
||||
You should edit line 2 of database.py, unless you want to use SQLite. This uses
|
||||
Peewee, so you can use any Peewee-supported database.
|
||||
|
||||
|
@ -13,13 +25,14 @@ You can create some problem YAML files that look like this:
|
|||
|
||||
```yml
|
||||
name: Problem Name
|
||||
author: ME!
|
||||
category: Binary
|
||||
description: binary binary binary binary. i love binary
|
||||
points: 250
|
||||
flags: "flag{whatever}"
|
||||
```
|
||||
|
||||
Then add them with `./ctftool add-problem problem.yml` and it'll get put in the
|
||||
Then add them with `./ctftool add-challenge problem.yml` and it'll get put in the
|
||||
database.
|
||||
|
||||
Run `python app.py` and you have a server running. You probably want to deploy
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
# Flagbase concepts
|
||||
## Competition
|
||||
A Competition is a single jeopardy-style CTF event. One instance of Flagbase
|
||||
corresponds to one Competition.
|
||||
|
||||
## Challenge
|
||||
A Challenge is a problem in a Competition. It either has a flag, or a grading
|
||||
script. It has a fixed number of points.
|
||||
|
||||
## Team
|
||||
A Team is a participant in a Competition. A Team can have multiple members, or
|
||||
a single member. Flagbase does not keep track of team membership.
|
||||
|
||||
## ScoreAdjustment
|
||||
Teams can score points in a Competition in two ways: they can either solve
|
||||
Challenges, or have ScoreAdjustments set on them. ScoreAdjustments are
|
||||
arbitrary point adjustments set by an AdminUser. They can be either positive or
|
||||
negative.
|
||||
|
||||
## AdminUser
|
||||
In the administrative interface, an AdminUser is an authorized user who can
|
||||
perform certain maintenance actions on the Competition, Challenges, and Teams.
|
||||
These actions can also be performed by the ctftool script, so an AdminUser can
|
||||
also be considered someone with access to the database.
|
Loading…
Reference in New Issue