Restaurando el marco de la pila después de que se ejecute la carga útil

1

¿Es posible restaurar el marco de la pila para que el EIP vuelva al lugar que estaba (antes del desbordamiento) después de que se haya ejecutado una carga útil?

Si un marco de pila se desborda y se ejecuta la carga útil, ¿cómo puede restaurarse la aplicación vulnerable para que continúe funcionando como antes?

Si el EIP se sobrescribe con la dirección al inicio de la carga útil o el sled NOP y digamos que genera un shell, ¿el shell generado mantiene el marco de pila en pausa? ¿O qué sucede exactamente después de que se ejecuta la carga útil y se vuelve a leer el EIP? ¿No causará un bucle infinito dentro del marco de la pila?

    
pregunta jarryd 21.09.2016 - 20:52
fuente

1 respuesta

2

Técnicamente, parece ser posible, pero solo en caso de que conozca la ruta del código (es decir, sabe que la vulnerabilidad solo se activará desde una dirección específica de la aplicación). Parece que lo que necesitas hacer es:

  • Sobrescriba solo la dirección de retorno en la pila (y nada más);
  • En su almacén de código ejecutado, el antiguo ESP / RSP en uno de los registros desechables, y configúrelo en otro lugar (para que sus operaciones no dañen la pila, puede que no sea necesario si está seguro de que su código de shell no dañará la pila contenido);
  • Almacene todos los registros que deben conservarse en todas las llamadas de función;
  • Haz lo que necesitas hacer;
  • Restaure los registros preservados y el puntero de la pila;
  • Asigne un valor de retorno adecuado (si la función devuelve un valor) a un registro (s) adecuado;
  • Salte a la dirección específica después de la cual se llamó la función desde la cual explotó.

Una cáscara generada en este caso puede usar una pila dedicada, o incluso la pila original. Dado que crece hacia abajo, si el código usa la pila correctamente, no dañará el contenido de pila original que se colocó allí antes de la invocación.

    
respondido por el George Y. 21.09.2016 - 23:53
fuente

Lea otras preguntas en las etiquetas