Como substituir o endereço de retorno na pilha usando um ataque de estouro de buffer

Para uma tarefa de casa, estou realizando uma série de ataques de estouro de buffer. Me foi dado um programa para desmontar, o código-fonte em C para uma função que indevidamente chamagets()e o código fonte para várias outras funções que eu deveria forçar o programa a chamar. Para uma das tarefas, tenho que:

Injetar algum código que altere um valor e, em seguida,Retornar para um dos métodos acima mencionados

A principal coisa que eu não entendo onde o programa aparece na pilha ao determinar onde retornar. Onde é o endereço de retorno para um método armazenado na pilha?

O programa foi compilado para x86.

questionAnswers(1)

yourAnswerToTheQuestion