¿Cómo se colocan los huevos en la memoria?

0

¿Cómo se coloca un huevo en la memoria antes de que se ejecute el código del cazador de huevos?

Si una carga útil es demasiado grande para el búfer de explotación pero un cazador de huevos puede encontrar la carga útil, ¿la carga útil también se envía en trozos más pequeños y se transfiere a la memoria de antemano? Si la carga útil se almacena y se realiza en etapas, ¿cómo se conectan los trozos de memoria para que el cazador de huevos pueda encontrar la carga completa más adelante? Supongo que cada trozo de carga podría tener un prefijo con la clave.

¿Cómo se almacenaría de antemano una sola carga útil, si no hay suficiente espacio para empezar?

    
pregunta jarryd 16.04.2018 - 18:47
fuente

2 respuestas

1

Esto será específico del objetivo (por ejemplo, un servicio o protocolo). La mayoría de las veces necesitarás una oportunidad para:

  1. copiar la carga útil final (más grande)
  2. copia el código de búsqueda de huevos (más pequeño)
  3. desencadenar el exploit

En un desbordamiento de pila típico, los pasos segundo y tercero probablemente se combinarán. Tenga en cuenta que el código de búsqueda de huevos debe aterrizar en algún lugar ejecutable, pero la carga útil no lo es, si la búsqueda de huevos es lo suficientemente inteligente.

Imagina un programa hipotético. Esto podría ser una implementación de un protocolo de red (como HTTP, SMTP, LDAP, etc.) o un código de análisis de archivos (tal vez una imagen o un analizador XML).

El proceso sería algo así como:

  • iniciar una sesión: abra una nueva conexión o comience a analizar una secuencia
  • envíe información que copie datos en masa: tal vez una primera solicitud HTTP o unos pocos kilobytes de datos de imagen
  • desencadenar una vulnerabilidad: tal vez una segunda solicitud HTTP canalizada o una estructura rota en el formato de imagen
  • búsqueda de huevos en todas las regiones de memoria, luego salte a la carga útil (tal vez asignando memoria, copiando y configurando los permisos correctos primero)

Durante el proceso de escribir el exploit, se pasará mucho tiempo enviando información y entendiendo dónde termina en la memoria (y por cuánto tiempo). Estas habilidades son directamente transferibles a otras tareas como fuzzing.

    
respondido por el David 17.04.2018 - 01:27
fuente
1

En general, necesitaría encontrar algo que se almacene en una variable apropiada en el mismo servicio para almacenar su huevo. El cazador de huevos más pequeño luego encuentra el huevo que previamente guardó.

    
respondido por el Some Linux Nerd 16.04.2018 - 22:55
fuente

Lea otras preguntas en las etiquetas