LiveCTF 2022
Repositório para armazenar desafios, anotações de infraestrutura, configuração de streaming e outras informações versionadas para o evento LiveCTF da final do DEF CON CTF.
Desafios usados no LiveCTF
| # | Nome do Desafio | Competidores | Vencedor |
|---|
| Oitavas de final: 1 | syscall-me-maybe | Shellphish vs PTB_WTL | Shellphish |
| Oitavas de final: 2 | open-to-interpretation | StarBugs vs ./V /home/r/.bin/tw | StarBugs |
| Oitavas de final: 3 | nopcoding | OSUSEC vs Maple Mallard Magistrates | Maple Mallard Magistrates |
| Oitavas de final: 4 | nerd-sniped | the new organizers vs [email protected] | the new organizers |
| Oitavas de final: 5 | fairy-nuff | DiceGuesser vs Sauercloud | Sauercloud |
| Oitavas de final: 6 | seek-and-destroy | 侍 vs perfect r✪✪✪t | perfect r✪✪✪t |
| Oitavas de final: 7 | nvulns | r3kapig vs Water Paddler | r3kapig |
| Oitavas de final: 8 | quick-cast | Katzebin vs Straw Hat | Straw Hat |
| Quartas de final: 1 | story-time | StarBugs vs the new organizers | StarBugs |
| Quartas de final: 2 | stacks | Shellphish vs Maple Mallard Magistrates | Maple Mallard Magistrates |
| Quartas de final: 3 | pacman |
Binários dos Desafios
Se você estiver interessado em jogar com os binários exatos usados durante cada rodada, você pode compilá-los você mesmo conforme descrito abaixo, ou procurar na subpasta handouts/ do release.
Estrutura do desafio
├── <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
Construindo os desafios
./livectf.py build <challenge>
Gerenciando os desafios
O gerenciamento de desafios (criação/compilação/inicialização/parada) é feito por meio do livectf.py, que é um wrapper leve em torno do docker. Consulte ./livectf.py --help para uso.
Adicionando um desafio
./livectf.py create <challenge> copiará o desafio modelo para um novo diretório de desafio.
- Adicione o código-fonte do seu desafio em
<challenge>/challenge/src
- Atualize o script de solução em
<challenge>/solution/solve.py
(Para desafios que incluem mais de um arquivo de código-fonte + um binário):
- Se necessário, edite
REQUIRED_PACKAGES em <challenge>/challenge/Dockerfile para incluir dependências extras de compilação/execução
- Se necessário, altere os comandos de compilação em
<challenge>/challenge/build.sh
- Se necessário, altere
HANDOUT_FILES em <challenge>/challenge/build.sh
Adicionando uma solução para um desafio
- Adicione quaisquer requisitos pip a
<challenge>/solution/requirements.txt
- Coloque seu script de solução em
<challenge>/solution/solve.py