0Pricing
Ethical Hacking Academy · Aula

Fuzzing para encontrar falhas

Encontre o deslocamento

Fuzzing para encontrar falhas é uma aula grátis de Ethical Hacking Academy no CoddyKit. Esta é a aula 2 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 Ethical Hacking Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Ethical Hacking Academy inclui 4 aulas no total.

O que é o fuzzing?

Fuzzing consiste em enviar entradas malformadas ou grandes demais a um programa para provocar um comportamento inesperado, especialmente falhas. Uma falha frequentemente indica um erro de corrupção de memória.

Em estouros de buffer, o primeiro objetivo é fazer o alvo falhar, para sabermos que existe um estouro.

O fluxo de trabalho

O fluxo de trabalho clássico de exploração é:

  • Testar por mutação até fazer o programa falhar.
  • Encontrar o deslocamento exato até o endereço de retorno.
  • Controlar o EIP.
  • Redirecionar para o código de shell.

Esta lição aborda as duas primeiras etapas.

Anexando um depurador

Para observar as falhas, anexe um depurador (como o Immunity Debugger ou o x64dbg no Windows, ou o GDB no Linux) ao alvo.

Quando o programa falha, o depurador mostra o estado dos registradores, especialmente o EIP, revelando se sobrescrevemos o endereço de retorno.

Enviando uma entrada crescente

Um testador simples envia strings cada vez maiores até o programa falhar. Um ponto de partida comum é enviar muitos caracteres «A» (0x41).

Se o EIP mostrar 41414141 depois da falha, você confirmou o controle sobre o endereço de retorno.

python -c 'print("A"*2000)' | ./vuln

Confirmando a falha

Quando o aplicativo falha e o EIP é igual a 41414141, o estouro alcançou o endereço de retorno salvo.

Mas você ainda não sabe exatamente quantos bytes precedem o EIP. Enviar sempre o mesmo byte informa que o EIP é controlável, não onde ele está localizado.

Encontrando o deslocamento: padrões cíclicos

Para encontrar o deslocamento preciso, envie um padrão exclusivo e não repetitivo em vez de usar apenas «A». Cada janela de 4 bytes é distinta, portanto o valor que chega ao EIP identifica o deslocamento.

O Metasploit fornece pattern_create.rb para isso.

msf-pattern_create -l 2000

Lendo o deslocamento

Depois da falha com o padrão, anote o valor no EIP. Passe-o para pattern_offset.rb, que retornará o número exato de bytes antes do EIP.

Esse deslocamento corresponde ao tamanho do preenchimento antes dos bytes do endereço de retorno.

msf-pattern_offset -l 2000 -q 39654138

Verificando o deslocamento

Verifique sempre. Crie uma entrada com offset bytes «A», seguidos de quatro bytes «B» (0x42). Se o EIP se tornar 42424242, o deslocamento está correto.

Essa confirmação evita horas desperdiçadas depurando mais tarde um erro de poucos bytes.

"A"*offset + "B"*4   # EIP should become 42424242

Identificando o ESP

Depois de controlar o EIP, observe também para onde o ESP aponta no momento da falha. Normalmente, o ESP aponta para logo depois do endereço de retorno sobrescrito, dentro do restante do seu buffer.

É nesse espaço que você colocará posteriormente o código de shell.

Recapitulação das ferramentas

Entre as ferramentas úteis para fuzzing e padrões estão:

  • Spike e boofuzz: testadores de protocolos de rede.
  • pattern_create / pattern_offset: localizam o deslocamento do EIP.
  • mona.py no Immunity: automatiza tarefas de padrão, deslocamento e caracteres inválidos.
!mona pattern_create 2000

A reprodutibilidade é importante

Uma falha útil precisa ser reprodutível. Salve a entrada exata que a provoca e execute-a novamente a partir de um estado limpo para confirmar que o deslocamento é estável.

Falhas inconsistentes geralmente significam que o erro não é um estouro de pilha limpo ou que alguma condição (tempo, tamanho, conteúdo) varia entre as execuções.

Verificação rápida

Lembre-se de por que um padrão cíclico é melhor do que uma string de bytes idênticos.

Recapitulação

Agora você sabe como encontrar o deslocamento da falha:

  • Teste por mutação com uma entrada crescente para provocar uma falha; confirme com 41414141 no EIP.
  • Use um padrão cíclico com pattern_create / pattern_offset para encontrar o deslocamento exato.
  • Verifique usando preenchimento + quatro bytes «B» (42424242).
  • Observe para onde o ESP aponta para posicionar posteriormente o código de shell.

Em seguida, você controlará totalmente o EIP e redirecionará a execução.

Perguntas Frequentes

A aula “Fuzzing para encontrar falhas” é grátis?

Sim — o texto completo de “Fuzzing para encontrar falhas” é 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 Ethical Hacking Academy, atualize para CoddyKit PRO. O curso de Ethical Hacking Academy inclui 4 aulas no total.

O que vou aprender em “Fuzzing para encontrar falhas”?

Encontre o deslocamento Você pratica Ethical Hacking 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 Ethical Hacking Academy?

Nenhuma experiência prévia é necessária. Ethical Hacking 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 2 de 4.

Quanto tempo leva a aula “Fuzzing para encontrar falhas”?

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 Ethical Hacking Academy?

Sim. Cada aula de Ethical Hacking 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. Memória e pilha
  2. Fuzzing para encontrar falhas
  3. Controle do EIP
  4. Shellcode e exploração
← Voltar para Ethical Hacking Academy