Un exploit simple lleva a un EIP y un EBP incorrectos

3

Tengo un programa simple:

void bug(char *arg1)
{
    char name[128];
    strcpy(name, arg1);
    printf("Hello %s\n", name);
}

int main(int argc, char **argv)
{
    if (argc < 2)
    {
        printf("Usage: %s <your name>\n", argv[0]);
        return 0;
    }

    bug(argv[1]);
    return 0;
}

Máquina: Ubuntu 14.04.1 32-Bit / gcc version 4.8.2

El archivo compilado con -fno-stack-protector y ALSR está desactivado

Esto es lo que obtengo después de intentar ejecutarlo desde gdb:

Lo que esperaba es ver el EIP establecido en 0x43434343 y el EBP establecido en 0x42424242 , pero vemos que ambos son 0x41414141

Por favor ayuda. ¿Qué estuvo mal?

    
pregunta user1826382 30.07.2015 - 20:17
fuente

1 respuesta

2

Usted acaba de descubrir que GCC realiza alineaciones en variables locales (pila). Un documento que podría darle una idea de este concepto es el siguiente: Asignación de ranura de pila óptima en GCC

    
respondido por el lulzpwner 31.07.2015 - 04:52
fuente

Lea otras preguntas en las etiquetas