entiendo que una carga útil de búfer basado en pila ataque de desbordamiento típica es como la siguiente:¿Cómo se aproxima la dirección de retorno modificada en un ataque de desbordamiento de búfer basado en la pila?
(dirección de retorno) (dirección de retorno) ... (dirección de retorno) (dirección de retorno) (dirección de retorno) (la dirección de retorno) (NOP) (NOP) (NOP) (NOP) ... (NOP) (NOP) (NOP) (NOP) (código shell)
también entiendo que la correcta ejecución del código shell depende de algunas cosas:
- La dirección de retorno de repetición porción de la carga útil tiene que sobrescribir el puntero devolución de ese marco de pila
- que devuelven la dirección tiene que ser la dirección de de alguna parte de la NOP corredera (o el comienzo de la shellcode)
Lo que no entiendo es cómo el malware que utiliza esta técnica siempre puede hacer estas dos cosas bien. Me parece que para crear una carga útil de trabajo, el atacante debe conocer la dirección aproximada del búfer de destino y su distancia aproximada desde la dirección de retorno.
¿Son estos dos factores bastante deterministas? Por ejemplo, si el atacante realiza algunas sesiones de prueba y error hasta que funcione en su máquina, ¿esa misma carga útil funcionará en todas las demás máquinas con los mismos binarios exactos?