SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: jvmjunior en Martes 26 de Mayo de 2009, 19:25
-
Hola.
Me piden que haga un caso de prueba, es decir que descubra como...desbordar el bufer de la memoria montón en el siguiente programa:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void comprobar (char *pas) {
char *passwd;
passwd = (char *) malloc (sizeof (char) * 8);
strcpy(passwd, pas);
passwd = (char *) strlwr(passwd); /* strlwr - convierte a minuscula*/ /* si no compila se quita el strlwr */
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", &i);
return 0;
}
[/list]
Espero tu ayuda...
Gracias.
-
Es muy simple la verdad ... pensa un poco. ¿Donde ves algun limite?
-
He llenado mi pantalla con carateres y esto me sigue funcionando......es justamente por eso mi duda
Gracias
-
Es normal que funcione, solo estas escribiendo sobre memoria virtual que no te fue asignada por el monticulo, ya encontraste la solucion.
-
strcpy(passwd, pas); es vulnerable porque copia todo hasta encontrar un NULL.
-
Si m0skit0, eso me parece que ya lo sabemos :lol:
-
Sigo sin encontrarle la solución, esto me funciona con cualquier valor que le dés, no sé a ustedes
M0skit0... vos sos el tipaso pa esto.....haber danos una lección!!
Gracias.
Saludos.
-
Mejor averigua el concepto de desbordamiento de buffer (http://es.wikipedia.org/wiki/Desbordamiento_de_buffer); la solucion ya la tenes.