Estoy siguiendo un tutorial para escribir un desbordamiento de búfer simple. Tengo conocimiento (básico) de montaje, y la pila. He escrito un desbordamiento de búfer basado en pila antes y lo entendí. El programa que estoy explotando esta vez tiene habilitado NX, lo que significa que no es posible ejecutar código desde la pila o una variable de entorno. El autor de este tutorial sugiere declarar una variable de entorno:
export $BINSH="/bin/sh"
y la carga útil suministrada al desbordamiento del búfer será la dirección del 'sistema' en el programa, seguida de la dirección de la 'salida' en el programa y, finalmente, la dirección de nuestra variable de entorno:
payload is : &system - &exit - &BINSH
Me las arreglé para hacer funcionar el exploit pero no entiendo la teoría detrás de la carga útil. Desafortunadamente, no se explica en el tutorial (que se puede encontrar aquí ).
¿Por qué sobrescribo EIP con la dirección al 'sistema' (y a qué corresponde esta dirección)?
¿De qué manera la ejecución de la dirección de mi variable de entorno que contiene / bin / sh como la tercera palabra en la carga útil?
PS: Linux, 32bit. inteligencia