LiveCTF 2022
Repository zur Ablage von Challenges, Infrastruktur-Notizen, Streaming-Konfiguration und anderen versionierten Informationen für das LiveCTF-Finale der DEF CON CTF.
Im LiveCTF verwendete Challenges
| # | Challenge-Name | Teilnehmer | Sieger |
|---|
| Achtelfinale: 1 | syscall-me-maybe | Shellphish vs PTB_WTL | Shellphish |
| Achtelfinale: 2 | open-to-interpretation | StarBugs vs ./V /home/r/.bin/tw | StarBugs |
| Achtelfinale: 3 | nopcoding | OSUSEC vs Maple Mallard Magistrates | Maple Mallard Magistrates |
| Achtelfinale: 4 | nerd-sniped | the new organizers vs [email protected] | the new organizers |
| Achtelfinale: 5 | fairy-nuff | DiceGuesser vs Sauercloud | Sauercloud |
| Achtelfinale: 6 | seek-and-destroy | 侍 vs perfect r✪✪✪t | perfect r✪✪✪t |
| Achtelfinale: 7 | nvulns | r3kapig vs Water Paddler | r3kapig |
| Achtelfinale: 8 | quick-cast | Katzebin vs Straw Hat | Straw Hat |
| Viertelfinale: 1 | story-time | StarBugs vs the new organizers | StarBugs |
| Viertelfinale: 2 | stacks | Shellphish vs Maple Mallard Magistrates | Maple Mallard Magistrates |
| Viertelfinale: 3 | pacman |
Challenge-Binaries
Wenn du mit den exakt identischen Challenge-Binaries spielen möchtest, die in jeder Runde verwendet wurden, kannst du sie entweder selbst wie unten beschrieben bauen oder im handouts/-Unterordner der Release nachsehen.
Challenge-Struktur
├── <challenge>
│ ├── challenge
│ │ ├── build.sh # Commands for building challenge binary/binaries and handout
│ │ ├── config.toml # Config file for flag submitter
│ │ ├── Dockerfile # Dockerfile for building challenge image
│ │ ├── run.sh # Command(s) to start the challenge
│ │ └── src # This is where the source for the challenge will go
│ │ └── challenge.c
│ └── solution
│ ├── requirements.txt # Solution script requirements
│ └── solve.py # Challenge solve script
Challenges bauen
./livectf.py build <challenge>
Challenges verwalten
Die Verwaltung der Challenges (Erstellen/Bauen/Starten/Stoppen) erfolgt über livectf.py, einen schlanken Wrapper um Docker. Siehe ./livectf.py --help für die Verwendung.
Eine Challenge hinzufügen
./livectf.py create <challenge> kopiert die Vorlagen-Challenge in ein neues Challenge-Verzeichnis.
- Füge deinen Challenge-Quellcode in
<challenge>/challenge/src hinzu.
- Aktualisiere das Lösungsskript in
<challenge>/solution/solve.py.
(Für Challenges mit mehr als einer Quelldatei + einem Binary):
- Falls nötig, bearbeite
REQUIRED_PACKAGES in <challenge>/challenge/Dockerfile, um zusätzliche Build-/Laufzeitabhängigkeiten aufzunehmen.
- Falls nötig, ändere die Build-Befehle in
<challenge>/challenge/build.sh.
- Falls nötig, ändere
HANDOUT_FILES in <challenge>/challenge/build.sh.
Eine Lösung für eine Challenge hinzufügen
- Füge alle pip-Anforderungen zu
<challenge>/solution/requirements.txt hinzu.
- Lege dein Lösungsskript in
<challenge>/solution/solve.py ab.