[HACK] Asunto: Re: Asunto: Re: Integer Buffer Overflow

__BoKeN__ boken at ono.com
Tue Jul 12 14:29:31 CEST 2005


>El valor es MAXUINT-100, más o menos.

Lo siento, pero por mas vueltas que le doy, no consigo verlo.

Y para clarificarme un poco he hecho un bucle que vaya decrementando, y corrobora,
que no es posible llegar a 0 sin antes pasar por todos los numeros positivos.

Para refrescar:
  #define MAX_SIZE 80
  int main(int argc, char **argv) {
	char buf[MAX_SIZE],*pbuf=buf;
	int count = atoul(argc[1]);
	
	if (count >= MAX_SIZE) count = MAX_SIZE-1;

	while (count--) *pbuf++=getchar();
	*pbuf=0;
  }
La funcion atoul es igual que atoi pero devuelve un valor unsigned int.

Vamos a ver, entiendo que MAXUINT = 4294967296 (Max unsigned int); (signed
int) MAXUINT = -1, aunque yo a esto le reste 100, count-- ira restando, cuando
llegue a -2147483647 el siguiente valor sera 2147483648 y asi hasta 0, que
es cuando finalizara el bucle.

Por lo que no entiendo porque si le doy el valor MAXUINT - 100 debe ejecutarse
el bucle tan solo 100 veces.

P.D.: ¿No sera que crees que el bucle suma a cada iteracion en lugar de restar?

Saludos y gracias.






More information about the hacking mailing list