Walkthrough CTF-BR FirstBlood
Esse ano, a equipe GS2W CTF Team, junto com o pessoal do CTF-BR e Coca-Cola administrou o CTF da CPBR12. Segue o walkthrough detalhado aqui para o pessoal que não teve a chance de matar todos os challs.
Don't stop believing ;)
First things first para quem prefere ver os writeups na forma de vídeo, segue o link do Rapt00r que fez o favorzão de gravar as challs que ele resolveu.
(*・‿・)ノ⌒*:・゚✧ vídeos
Disclaimer: Alguns write-ups ainda estão saindo do forno, então você não vai conseguir encontrá-los aqui :(*Crash on Purpose
*J1
*Portas
*Onde estou?
*Crypt0_1
*1ngr3d13nt3 s3cr3t0
*Capture sua coca
*ColorpassBe patient ☯
Reversing
Como todo bom e velho desafio de reversing, começamos por entender com o que estamos lidando.
- Que tipo de arquivo é esse?
- O que ele tem para nos apresentar?
Através dos comandos type e strings podemos notar que se trata de um ELF 64-bit e que uma palavra meio esquisita “easycrackH” se destaca, mas ainda não faz muito sentido…
Bom, continuamos…
Usando nosso lindo e maravilhoso Radare 2 resolvemos o mistério. Como estamos rodando em um sistema 64 bits, acabamos com a seguinte lógica:
1 char = 1 byte = 8 bits
easycrack = 8 chars = 8 bytes
8 bytes = 8 x 8 bits = 64 bits
Ou seja, nossos endereços de memória possuem 8 bytes e, portanto, a última letra “k” deve ser levada para o próximo registrador, fugindo do nosso queridíssimo strings :(
Flag: GS2W{easycrack}
Para esse chall, deixo o vídeo do Rapt00r, novo membro do time que já chegou estourando!
Flag: GS2W{3,14}
Essa chall é bem clássica de reversing… O código possui uma função que não é chamada na main (função principal na linguagem C) e a flag está dentro dela. Classic.
Abrindo o arquivo no gdb (https://www.gnu.org/software/gdb/) e usando o comando “info functions” vemos todas as funções presentes no código:
Ok, tem uma função secret entre as funções, hmmm, estranho… Vamos ver o que ela retorna.
Primeiro setamos o ponteiro para nossa função main e dizemos para iniciar o programa (“r” = run)
break main
r
Apontamos para nossa função secreta e dizemos para continuar (“c” = continue)
jump secret
ou
set $rip=secret
c
Flag: GS2W{3sc0nd1d0_3h_M41s_G0st0S0}
CTF Físico
Esse chall foi mais para fazer uma brincadeira com a galera que estava presente na Campus.
A ideia foi deixar um NodeMCU com vários SSID’s inundando a rede.
Dentre dos vários SSID’s, quatro formavam a flag:
- GS2W{3553_4n0_t3m
- _w1f1_n4_c4mpu5_m4s_
- 53r4_qu3_v41_func10n4r_
- _m3sm0?34rrrff!!!}
Flag: GS2W{553_4n0_t3m_w1f1_n4_c4mpu5_m4s_53r4_qu3_v41_func10n4r_m3sm0?34rrrff!!!}
Misc
Esse foi um desafio bem simples! Basicamente:
- tar xvf cat.me.tar.gz
- fcrackzip -v -D -u -p /usr/share/wordlists/rockyou.txt cat.me.zip
- unzip cat.me.zip com a senha encontrada
- decode o texto com Cifra de César
- Quebrar o MD5
Se você não identificar logo de cara que é um MD5, existem várias ferramentas para ajudar, como o comando hash-identifier e hashid no linux. O site crackstation.net identifica para você e já quebra a hash. Não poderia ser mais cômodo viver no século 21.
Flag: GS2W{GS2W}
Chall bem tranquilo, só para aquecer no brute force. Um pdf está protegido por senha e o seu trabalho é conseguir abri-lo. Sem mais delongas:
pdfcrack -w /usr/share/wordlists/rockyou.txt secreto.pdf
Flag: GS2W{4716b435ce8ddd6ede25a2926d0c8d42}
Forensics
A ideia desse chall era encontrar analisar os commits e checar se alguma informação sensível foi passada sem perceber, como a senha do desenvolvedor por exemplo.
Mais uma vez, deixo o Rapt00r fazer as honras:
Flag: GS2W{4ch0u_mizeravi!}
Pwn
A ideia principal desse chall era entender que se tratava de um timimg attack.
O Pedro explica melhor sobre isso no write-up que ele fez:
Flag: GS2W_{P4ssw0RD_T1MinG_4TT4Ck!}
Se quiser saber mais sobre o time: http://gs2w.org/
Escrito por Alexandra Percário ✧゚・:*⌒\(・‿・*)