Stack overflow

O stack overflow Como sabemos, a stack do processador é usada para múltiplos propósitos: ela guarda dados, mas também o endereço de onde o Program Counter deve ir quando uma função retorna. Por causa disto, uma escrita nos dados da stack pode alterar o fluxo do programa, caso seja feita de maneira incorreta (ou ainda maliciosa). Imagine um buffer sendo definido localmente em uma função. Ele consequentemente será alocado na stack. Se o programa tentar escrever além dos limites do tamanho do buffer, escreverá em dados que não fazem parte do buffer e, eventualmente, escreverá também na posição do endereço de retorno da função. Para testar um buffer overflow, o pesquisador insere uma entrada para o programa executável com uma grande quantidade de caracteres, por exemplo: payload = AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDD...etc São usadas 8 letras de cada para um processador de 64 bits. Seriam 4 letras para um processador de 32 bits. Se uma quantidade que excede o tamanho do buffer causar um e...