[HACK] buffer overflows & gcc

ciberjacobo ciberjacobo at pascal.jepsi.net
Sat Feb 19 14:18:16 CET 2005


Buenas,
 El otro día leyendo un artículo de la revista phrack [1] llamado
 "The Frame Pointer Overwrite" habla de los desbordamientos de buffer
 por 1 byte (off-by-one) donde se da la situación que en la pila
 hay un buffer de 256 bytes justo arriba del %ebp y un error
 del programador "for (i=0; i<= 256; i++)"
                             ^^
 permite sobrescribir con valores triviales el byte más bajo del
 registro ebp apilado. El artículo que comento fue escrito en 1999.
 Me decidí a probar dicha técnica y me di cuenta que el gcc deja 2
 palabras "de margen" entre el buffer y el (ebp, eip) tanto en la 
 versión 3.3 que en la 2.95. Probé varios tamaños de buffer: 256, 257,
 254,250... pero siempre deja 2 palabras de margen.

 Por fin mi pregunta:
 ¿Sabe alguién si a partir de cierta versión del GCC el compilador
 deja "márgenes" en la pila entre las variables locales y los registros
 para evitar errores de este tipo?


Saludos.


 Referencias:
 [1] http://www.phrack.org/phrack/55/P55-08
-- 
  Jacobo Avariento Gimeno
 _________________________________________________
| WebSite:         http://ciberjacobo.com         |
| GPG/OpenPGP key: http://ciberjacobo.com/key.asc |
| JID:             jack at im.jepsi.org              |
| IRC:             irc.irc-euro.org @ #jepsi      |
|_________________________________________________|



More information about the hacking mailing list