[HACK] Integer Buffer Overflow
__BoKeN__
boken__ at hotmail.com
Thu Apr 28 10:30:39 CEST 2005
Hola a todos.
En el siguiente codigo:
#define MAX_SIZE 80
int main(int argc, char **argv) {
char buf[MAX_SIZE],*pbuf=buf;
int count = atoi(argv[1]);
if (count >= MAX_SIZE) count = MAX_SIZE-1;
while (count--) *pbuf++=getchar();
*pbuf=0;
}
Se puede explotar dando como argumento un valor superior a 2147483647, de
este modo el count se desborda y se convierte en un numero negativo. Despues
comenzara a restarle 1 consecutivamente hasta que valga 0.
Desbordando la variable count, el numero minimo de bytes sobreescritos es de
2147483648 (-2147483648,2147483647,2147483646,...,1), la cuestion es que yo
no quiero sobreescribir tantas direcciones de memoria, solo querria escribir
cerca de 100 bytes. (buf,80 bytes;int,4 bytes;ESP,4 bytes; EBP, 4 bytes;EIP
4 bytes) sin tener en cuenta la alineacion y demas detalles.
¿Que puedo hacer para controlar el numero de bytes sobreescritos y poder
para una vez alcanzado el EIP?
Saludos y gracias a todos de antemano.
_________________________________________________________________
Descarga gratis la Barra de Herramientas de MSN
http://www.msn.es/usuario/busqueda/barra?XAPID=2031&DI=1055&SU=http%3A//www.hotmail.com&HL=LINKTAG1OPENINGTEXT_MSNBH
More information about the hacking
mailing list