0Pricing
Cyber Security Academy · Aula

Transbordamentos de Buffer na Pilha

Compreenda o layout da pilha, o transbordamento de EIP/RIP e escreva um exploit funcional para um binário C vulnerável.

Transbordamentos de Buffer na Pilha é uma aula grátis de Cyber Security Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Cyber Security Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cyber Security Academy inclui 4 aulas no total.

O que é um estouro de buffer?

Um estouro de buffer ocorre quando mais dados são gravados em um buffer do que ele comporta. Os dados excedentes sobrescrevem a memória adjacente, podendo corromper estruturas de controle e redirecionar a execução do programa.

Organização da memória da pilha

A pilha de chamadas contém: variáveis locais (buffers), ponteiro de quadro salvo (SFP) e o endereço de retorno (RIP/EIP) — onde a execução continua depois que a função retorna. O estouro de um buffer local pode sobrescrever o endereço de retorno.

Sobrescrita clássica da pilha

Se um programa chamar gets() ou strcpy() sem verificar o comprimento, um invasor poderá inserir bytes suficientes para preencher o buffer e sobrescrever o endereço de retorno com o endereço de um código de shell ou de um componente útil.

// Vulnerable C code:
void vuln() {
  char buf[64];
  gets(buf);  // No bounds checking!
}

Encontrando o deslocamento

Determine quantos bytes chegam ao endereço de retorno usando a geração de padrões:

# Generate a cyclic pattern:
python3 -c "from pwn import *; print(cyclic(200))" | ./vuln
# After crash, find offset:
python3 -c "from pwn import *; print(cyclic_find(0x61616166))"

Proteções: canários da pilha

Um canário da pilha é um valor aleatório colocado entre as variáveis locais e o endereço de retorno salvo. Antes de retornar, o canário é verificado — se tiver sido sobrescrito, o programa será encerrado. É necessário contorná-lo para explorar um estouro clássico.

Proteções: ASLR

Randomização do layout do espaço de endereços (ASLR) randomiza o endereço base da pilha, da memória dinâmica e das bibliotecas a cada execução. Sem um vazamento de um endereço atual, é inviável adivinhar para onde saltar em sistemas de 64 bits.

Proteções: NX/DEP

NX (Não executável) / DEP (Prevenção da execução de dados) marca a pilha como não executável. O código de shell injetado na área de armazenamento não pode ser executado diretamente. Isso força os invasores a usar a Programação Orientada a Retorno (ROP).

Vazamento de endereços

Para derrotar o ASLR, os invasores precisam de um vazamento de informações: vulnerabilidades de cadeia de formato, leituras além dos limites da memória dinâmica (como no Heartbleed) ou um ponteiro legível na função explorada. Um único endereço vazado revela o deslocamento e permite calcular outros endereços.

Escrevendo uma exploração básica

Um estouro de pilha básico de 32 bits sem proteções:

# Python exploit skeleton (pwntools):
from pwn import *
p = process("./vuln")
offset = 76
shellcode = asm(shellcraft.sh())
payload = shellcode + b"A" * (offset - len(shellcode)) + p32(stack_addr)
p.sendline(payload)
p.interactive()

Técnica ret2libc

ret2libc contorna o NX retornando para funções da biblioteca C (como system()) em vez de usar código de shell. O invasor sobrescreve o endereço de retorno com o endereço de system e passa "/bin/sh" como argumento.

Ferramentas para desenvolvimento de explorações

Ferramentas essenciais:

  • pwntools — biblioteca de exploração para Python
  • GDB + pwndbg/peda — depurador com auxiliares para exploração
  • checksec — exibe as proteções do binário
  • ROPgadget / ropper — encontra cadeias de ROP
checksec --file=./vuln

Verificação rápida: estouro de pilha

Qual mitigação coloca um valor aleatório entre as variáveis locais e o endereço de retorno salvo, encerrando o programa se ele for sobrescrito?

Recapitulação da lição

Estouros de área de armazenamento da pilha sobrescrevem o endereço de retorno quando uma área de armazenamento é preenchida além dos seus limites. As proteções incluem canários da pilha (que detectam sobrescritas), ASLR (que randomiza os endereços) e NX/DEP (que torna a pilha não executável). ret2libc contorna o NX. Vazamentos de informações derrotam o ASLR. pwntools simplifica o desenvolvimento de explorações.

Perguntas Frequentes

A aula “Transbordamentos de Buffer na Pilha” é grátis?

Sim — o texto completo de “Transbordamentos de Buffer na Pilha” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Cyber Security Academy, atualize para CoddyKit PRO. O curso de Cyber Security Academy inclui 4 aulas no total.

O que vou aprender em “Transbordamentos de Buffer na Pilha”?

Compreenda o layout da pilha, o transbordamento de EIP/RIP e escreva um exploit funcional para um binário C vulnerável. Você pratica Cyber Security Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Cyber Security Academy?

Nenhuma experiência prévia é necessária. Cyber Security Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Transbordamentos de Buffer na Pilha”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Cyber Security Academy?

Sim. Cada aula de Cyber Security Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Transbordamentos de Buffer na Pilha
  2. Programação Orientada a Retorno (ROP)
  3. Vulnerabilidades de Strings de Formatação
  4. Exploração do Heap: Use-After-Free e Heap Spraying
← Voltar para Cyber Security Academy