O que é um CTF? Aprenda hacking jogando
Entenda como competições Capture the Flag ensinam pentest na prática de forma legal e divertida — formatos, categorias, ferramentas, estratégia de time e o caminho do iniciante ao profissional.

Aprender segurança ofensiva lendo livros é importante, mas há um limite no que a teoria ensina. Em algum momento você precisa colocar a mão na massa — e fazer isso em sistemas reais sem autorização é crime. É aí que entram os CTFs: competições onde hackear não só é permitido, mas é o objetivo do jogo. Neste artigo você vai entender o que é um CTF, seus formatos, as categorias clássicas de desafios, as ferramentas envolvidas, como montar uma rotina de estudo e como tudo isso se conecta ao trabalho real de pentest. A proposta é que, ao terminar a leitura, você saiba exatamente por onde dar o primeiro passo.
O que significa Capture the Flag
CTF, ou Capture the Flag, é um formato de competição de segurança da informação em que os participantes resolvem desafios para encontrar pequenos trechos de texto chamados flags. Uma flag costuma ter um formato reconhecível, como flag{...}, CTF{...} ou picoCTF{...}, e serve de prova de que você resolveu o desafio. Você submete a flag em uma plataforma de pontuação e, se estiver correta, ganha os pontos associados àquele desafio.
O nome vem do clássico jogo de "capturar a bandeira" do mundo físico, mas a analogia digital é mais sutil. A flag é simultaneamente o objetivo e a evidência: o autor do desafio a escondeu em um lugar que só fica acessível depois que você explora a vulnerabilidade pretendida. Encontrar a flag por um caminho não previsto — o famoso unintended solution — também conta, e muitas vezes rende os melhores writeups.
O conceito é genial por um motivo: ele cria um ambiente legal e controlado para praticar hacking. Tudo que você ataca foi montado de propósito para ser atacado, então não há vítimas, não há danos colaterais e não há problemas jurídicos. Você aprende as mesmas técnicas de um pentest real, mas dentro das regras. Isso remove a maior barreira do aprendizado em segurança ofensiva: o medo (justificado) de cometer um crime ao testar o que se acabou de estudar.
Por que CTFs são tão eficazes para aprender
Competições de CTF funcionam como um laboratório gamificado. Em vez de só ler sobre SQL Injection, você precisa realmente injetar a query certa para extrair a flag de um banco de dados. Essa exigência prática consolida o conhecimento de um jeito que a leitura passiva não consegue. A diferença entre reconhecer um conceito e aplicá-lo sob pressão é enorme — e é exatamente onde o aprendizado se fixa.
Os benefícios mais citados por quem joga:
- Feedback imediato e binário. Ou a flag está certa, ou não está. Não há ambiguidade nem necessidade de um instrutor para corrigir. Esse loop curto entre tentativa e resultado é o que torna a prática viciante e produtiva.
- Dificuldade progressiva. Desafios vão do trivial ao quase impossível, acompanhando seu crescimento. A pontuação reflete a dificuldade: você começa em algo de 50 pontos e, conforme ganha repertório, ataca os de 500.
- Comunidade. Writeups (soluções publicadas) e times ensinam abordagens que você não imaginaria sozinho. Ler writeups é uma das formas mais densas de aprendizado que existem em segurança.
- Custo zero de risco. Errar num CTF não derruba a produção de ninguém. Você pode brutar, travar e refazer sem consequências legais ou éticas.
Muitas das técnicas exploradas em competições vêm direto da literatura de segurança web, como o trabalho de referência de Stuttard e Pinto (2011), que sistematiza ataques a aplicações que você reencontra disfarçados em desafios.
Há um custo nessa abordagem que vale reconhecer: desafios de CTF tendem a ser artificiais e auto-contidos. Eles isolam uma vulnerabilidade para que ela seja o gargalo do desafio, enquanto sistemas reais são bagunçados, cheios de ruído e raramente entregam a falha de bandeja. Trataremos dessa diferença mais adiante.
Os principais formatos de CTF
Nem todo CTF funciona igual. O formato muda completamente a dinâmica, a estratégia e até o tamanho ideal do time.
Jeopardy
É o formato mais popular e o melhor para iniciantes. Há um quadro de desafios independentes, organizados por categoria e pontuação — visualmente parecido com o tabuleiro do programa de TV que dá nome ao estilo. Você escolhe o que resolver e ganha pontos por flag. Não há ataque entre equipes; você joga contra o problema, não contra adversários diretamente.
A vantagem para quem está começando é poder escolher o que atacar, no seu ritmo, sem o estresse de defender uma infraestrutura ao mesmo tempo. Competições como as da picoCTF e a maioria dos eventos listados no CTFtime usam esse formato.
Attack-Defense
Aqui cada equipe recebe um servidor (ou um conjunto de serviços) idêntico e propositalmente vulnerável. O jogo tem duas faces simultâneas: você precisa corrigir as falhas da sua máquina para não ser explorado e, ao mesmo tempo, atacar as máquinas dos outros times explorando as mesmas falhas. Flags são plantadas periodicamente nos serviços de todos, e roubar a flag de um adversário rende pontos.
É um formato exigente, que recompensa automação. Times fortes escrevem scripts de exploração que rodam em loop contra todos os adversários e sistemas de detecção que capturam e replicam ataques recebidos. Exige equipe coordenada e infraestrutura própria — não é por onde se começa, mas é o mais próximo de um cenário de guerra cibernética.
King of the Hill (KoTH)
As equipes disputam o controle de uma mesma máquina, e ganha pontos quem a mantém sob domínio por mais tempo. Você precisa explorar a falha, garantir persistência e, idealmente, expulsar quem chegou antes ou impedir que outros entrem. A pontuação acumula enquanto você mantém o domínio (geralmente provada por um arquivo que seu acesso reescreve periodicamente). É um híbrido divertido entre ataque e negação de acesso aos concorrentes.
Para quem está começando, o formato Jeopardy é o caminho natural: ele permite avançar no seu ritmo e focar nas categorias que mais lhe interessam.
As categorias clássicas de desafios
Os desafios em estilo Jeopardy quase sempre se organizam em categorias que mapeiam, grosso modo, as grandes disciplinas da segurança ofensiva. Conhecê-las ajuda a escolher por onde começar:
- Web. Exploração de aplicações: injeção (SQL, NoSQL, comando, template), XSS, SSRF, autenticação quebrada, lógica de negócio falha e deserialização. É a categoria com mais transferência direta para o trabalho profissional.
- Pwn / Binary Exploitation. Abuso de programas compilados, como buffer overflows, format string e corrupção de memória, além de técnicas modernas como ROP (Return-Oriented Programming) para contornar proteções como NX e ASLR.
- Reverse Engineering. Análise de binários para entender o que fazem e extrair a flag escondida, sem ter o código-fonte. Desmontar, descompilar e raciocinar sobre a lógica.
- Cryptography. Quebra ou abuso de esquemas criptográficos mal implementados: cifras clássicas, reuso de nonce, padding oracle, RSA com parâmetros fracos.
- Forensics. Análise de capturas de rede (PCAP), imagens de disco, memória, esteganografia e recuperação de arquivos apagados.
- OSINT. Coleta de informações públicas, parente direto do reconhecimento (recon) de um pentest real — pistas em redes sociais, metadados e registros públicos.
- Miscellaneous (Misc). O que não cabe nas outras: programação, shell restrito (jail escape), lógica e quebra-cabeças.
Não tente dominar todas de uma vez. A maioria dos jogadores experientes tem uma ou duas categorias favoritas e contribui para o time nelas. Escolha uma, fique confortável e só então diversifique.
Ferramentas que você vai usar
A boa notícia é que as ferramentas de CTF são as mesmas do pentest profissional. Nos desafios web, por exemplo, o Burp Suite é praticamente indispensável para interceptar e manipular requisições — uma habilidade que você leva direto para o mundo real.
Um kit inicial costuma incluir:
- Burp Suite para desafios web, mais o devtools do navegador e clientes HTTP como curl.
- Ghidra ou radare2 para engenharia reversa (o Ghidra é o descompilador gratuito da NSA).
- pwntools (biblioteca Python) para exploração de binários — indispensável para automatizar a interação com o alvo.
- Wireshark para forense de rede, mais binwalk e foremost para extrair arquivos embutidos.
- CyberChef para manipulação rápida de dados e cifras.
Aprender a ferramenta no contexto do desafio é muito mais eficiente do que estudá-la isolada. O CTF dá o problema; a ferramenta vira meio.
Veja um exemplo mínimo de pwntools que se conecta a um serviço remoto, envia uma carga e lê a resposta — o esqueleto de quase todo desafio de pwn:
from pwn import *
# conecta ao serviço do desafio
io = remote("desafio.exemplo.ctf", 1337)
# recebe o prompt e envia o payload
io.recvuntil(b"Digite seu nome: ")
payload = b"A" * 64 + p64(0xdeadbeef) # overflow + endereco de retorno
io.sendline(payload)
# captura a resposta (esperando a flag)
print(io.recvall().decode())
io.close()Para web, boa parte do trabalho começa repetindo e modificando uma requisição. Um teste manual de SQL injection pode ser tão simples quanto:
# requisicao original devolve 1 resultado
curl "https://alvo.ctf/produto?id=1"
# injecao booleana: se a pagina muda, o parametro e vulneravel
curl "https://alvo.ctf/produto?id=1' OR '1'='1"
# extraindo dados via UNION quando o numero de colunas e conhecido
curl "https://alvo.ctf/produto?id=-1' UNION SELECT 1,flag,3 FROM secrets-- -"Anatomia de um desafio web resolvido passo a passo
Para tornar concreto, veja o fluxo típico de um desafio web de dificuldade média:
- Mapeie a aplicação. Navegue por todas as páginas, observe parâmetros, cookies e cabeçalhos. Anote tudo que aceita entrada do usuário.
- Identifique o ponto de injeção. Teste cada parâmetro com cargas características (',