Por lo general, todos vemos el formato de desbordamiento del búfer de base, que cuenta con: - NOPs + shellcode + return_address
Buffer formato de ataque de desbordamiento
¿Por qué no usamos, NOPs + return_address + shellcode?
donde realizamos el punto de dirección de retorno al inicio del código shell?
Supongo que esto se debe a que podríamos estar tratando de escribir datos fuera del segmento de pila si la vulnerabilidad está en el main(). ¿Estoy en lo cierto? Si lo soy, ¿es esa la única razón?
Ah, y sí, no me estoy refiriendo a otros tipos de ataques que usan return-to-libc, ptrace, etc. Solo deseo saber por qué el ataque de desbordamiento de búfer más básico se demuestra de la primera manera y no el segundo en todas partes.
gracias por su respuesta detallada! –