LiveCTF 2022
Repositorio para almacenar retos, notas de infraestructura, configuración de streaming y otra información versionada para el evento final de CTF en vivo de DEF CON CTF.
Retos utilizados en LiveCTF
| # | Nombre del reto | Competidores | Vencedor |
|---|
| Octavos de final: 1 | syscall-me-maybe | Shellphish vs PTB_WTL | Shellphish |
| Octavos de final: 2 | open-to-interpretation | StarBugs vs ./V /home/r/.bin/tw | StarBugs |
| Octavos de final: 3 | nopcoding | OSUSEC vs Maple Mallard Magistrates | Maple Mallard Magistrates |
| Octavos de final: 4 | nerd-sniped | the new organizers vs [email protected] | the new organizers |
| Octavos de final: 5 | fairy-nuff | DiceGuesser vs Sauercloud | Sauercloud |
| Octavos de final: 6 | seek-and-destroy | 侍 vs perfect r✪✪✪t | perfect r✪✪✪t |
| Octavos de final: 7 | nvulns | r3kapig vs Water Paddler | r3kapig |
| Octavos de final: 8 | quick-cast | Katzebin vs Straw Hat | Straw Hat |
| Cuartos de final: 1 | story-time | StarBugs vs the new organizers | StarBugs |
| Cuartos de final: 2 | stacks | Shellphish vs Maple Mallard Magistrates | Maple Mallard Magistrates |
| Cuartos de final: 3 | pacman |
Binarios de los retos
Si te interesa jugar con los binarios exactos de los retos utilizados en cada ronda, puedes compilarlos tú mismo como se describe a continuación, o buscarlos en la subcarpeta handouts/ de la release.
Estructura de un reto
├── <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
Compilar retos
./livectf.py build <challenge>
Gestión de retos
La gestión de retos (creación/compilación/inicio/detención) se realiza mediante livectf.py, que es un envoltorio ligero alrededor de docker. Consulta ./livectf.py --help para ver su uso.
Añadir un reto
./livectf.py create <challenge> copiará la plantilla de reto a un nuevo directorio de reto.
- Añade el código fuente de tu reto en
<challenge>/challenge/src
- Actualiza el script de solución en
<challenge>/solution/solve.py
(Para retos que incluyen más de un archivo fuente + un binario):
- Si es necesario, edita
REQUIRED_PACKAGES en <challenge>/challenge/Dockerfile para incluir dependencias adicionales de compilación/ejecución
- Si es necesario, cambia los comandos de compilación en
<challenge>/challenge/build.sh
- Si es necesario, cambia
HANDOUT_FILES en <challenge>/challenge/build.sh
Añadir una solución para un reto
- Añade los requisitos pip necesarios a
<challenge>/solution/requirements.txt
- Coloca tu script de solución en
<challenge>/solution/solve.py