[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