0 votos
por (20 puntos) en C/C++
Necesito demostrar un caso de prueba q detecte el desbordamiento del buffer en memoria monton que se puede producir en este programa:

<pre lang='c' lineno='1'>#include <stdio.h>

void comprobar (char *pas) {
 char *passwd;

 passwd = (char *) malloc (sizeof (char) * 8);
 strcpy(passwd, pas);
 passwd = (char *) strlwr(passwd);
 if (strcmp(passwd, "mipas")==0) printf ("Password correcto. ");
 else printf ("Password incorrecto. ");
 return;
}

int main(int argc, char *argv[]) {
 int i;

 comprobar (argv[1]);
 printf ("Finaliza. ");
 scanf("%d", &amp;i);
 return 0;
}
He intentado con muchos valores y no logro encontrar la solución, yo utilizo el Ubuntu con (x86) como referencia.

Saludos.


1 Respuesta

0 votos
por (40 puntos)
Es facil solo tienes que desbordar el buffer que pediste con malloc como el buffer que pediste es de 8 caracteres con una palabra de 8 letras se desborda ya que tienes que tener espacio para el caracter final '' entonces cuando compilas y tienes el ejecutable haces esto

./miprograma palabrademasdeocholetras


Preguntas relacionadas

0 votos
0 respuestas
preguntado por 1bept (20 puntos) Ene 28, 2016 en C/C++
0 votos
0 respuestas
preguntado por alexjjj (20 puntos) Dic 4, 2022 en C/C++
0 votos
0 respuestas
preguntado por jeremias10 (760 puntos) Ene 28, 2016 en C/C++
0 votos
2 respuestas
Bienvenido a Dudas de Programación, donde puedes hacer preguntas y recibir respuestas sobre los problemas más frecuentes de los lenguajes de programación, frameworks de desarrollo y bases de datos que utilices. Foro de Línea de Código

Categorías

...