Objetivo

O objetivo do desafio é fazer uma alteração na execução do programa para chamar a função “vitoria”

Execução

Analisando o código fonte, é possível notar que a função não é chamada em nenhum momento durante a execução do programa

Então, utilizando o OllyDbg, comecei a analisar a sua execução e durante o processo, encontrei o endereço de memória da função que eu quero chamar

A primeira informação obtida é que o endereço da função vitoria é 00401350

Como tenho acesso ao código da aplicação, sei que a variável está esperando receber 50 caracteres no máximo, então enviei os 50 para ver como ficava essa variável na memória

Analisando a pilha, podemos ver o espaço reservado para receber o conteúdo da variável

Como podemos ver na imagem, o endereço de retorno está localizado em 0060FF0C, então para sobrescrever o endereço de retorno é preciso enviar mais 16 caracteres

Enviando então, os 66 caracteres a aplicação retorna um erro

E como pode ser visto nos registradores, EIP foi sobrescrito

Agora que já tenho a quantidade de caracteres que preciso enviar, e como já sei o endereço de memória da função vitoria, basta substituir os últimos 4 bytes pelo endereço e enviar para aplicação

Usando o python, criei um programa bem simples para criar meu payload

Por fim, enviei essa saída para o programa vulnerável, e assim consegui resolver o desafio