Pregunta

He leído dos artículos sobre el montón de pulverización: Wikiepdia y this entrada de blog . Entiendo cómo se introduce el código shell en la memoria del programa. Pero, ¿cómo se hace el programa para saltar / llamada a la memoria de direcciones situada en el montón?

¿Qué tipo de accidente hace un llamado a la pila?

¿Tiene este tipo de necesidades de ataque para llevarse a cabo con una especie de ataque de desbordamiento de búfer?

¿Hay alguna regla de oro como el que con tampón de desbordamiento es decir, utilizar la versión n de funciones (strncpy lugar strcpy)?

¿Fue útil?

Solución

Si he entendido bien,

  

Por lo común se aprovechan de la   hecho de que estos bloques del montón   más o menos en el mismo lugar cada   tiempo el spray montón se ejecuta. Ejecución   flujo puede ser redirigido al montón   aerosoles a través de desbordamiento del búfer o montón   fallas de desbordamiento.

Están hablando de una situación como esta:

char buffer[10];
FuncPtr p;

Y cuando se lee en buffer no hay protección contra el desbordamiento, y se puede escribir directamente en la ubicación de memoria para p. Más tarde, cuando sus intentos de código para llamar p, saltará a donde el atacante quiere que salte, presumiblemente donde inyectan código ejecutable en su aplicación.

solución sencilla:. No usar tampones estáticos (prefieren las clases de colección std::) y compruebe siempre en busca de desbordamientos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top