¿Se puede explotar este desbordamiento de enteros?

-1
char buffer[100];
char buffer_size[40];
int i;
fgets(buffer_size,32,stdin);
i = atoi(buffer_size);

if(i+1 < 100)
  if(i>=0)
    fgets(buffer,i,stdin);
    
pregunta syubelsk1 18.11.2017 - 03:14
fuente

1 respuesta

1

Bueno, ya que i podría ser INT_MAX (0x7FFFFFFF), que es un poco más de 2 mil millones, pero si le agregas 1 obtienes 0x80000000 (justo debajo de los dos mil millones negativos, para entradas firmadas) ... pasa la prueba y terminas tratando de llenar un búfer de 100 bytes con hasta 2 gigas de datos. Eso es malo (y explotable), sí.

    
respondido por el CBHacking 18.11.2017 - 04:17
fuente

Lea otras preguntas en las etiquetas