SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: jvmjunior en Martes 26 de Mayo de 2009, 19:25

Título: Como desbordar la memoria con este Programa??
Publicado 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.
Título: Re: Como desbordar la memoria con este Programa??
Publicado por: Eternal Idol en Martes 26 de Mayo de 2009, 20:46
Es muy simple la verdad ... pensa un poco. ¿Donde ves algun limite?
Título: Re: Como desbordar la memoria con este Programa??
Publicado por: jvmjunior en Martes 26 de Mayo de 2009, 22:24
He llenado mi pantalla con carateres y esto me sigue funcionando......es justamente por eso mi duda

Gracias
Título: Re: Como desbordar la memoria con este Programa??
Publicado por: Eternal Idol en Miércoles 27 de Mayo de 2009, 00:00
Es normal que funcione, solo estas escribiendo sobre memoria virtual que no te fue asignada por el monticulo, ya encontraste la solucion.
Título: Re: Como desbordar la memoria con este Programa??
Publicado por: m0skit0 en Miércoles 27 de Mayo de 2009, 10:11
strcpy(passwd, pas); es vulnerable porque copia todo hasta encontrar un NULL.
Título: Re: Como desbordar la memoria con este Programa??
Publicado por: Eternal Idol en Miércoles 27 de Mayo de 2009, 10:29
Si m0skit0, eso me parece que ya lo sabemos  :lol:
Título: Re: Como desbordar la memoria con este Programa??
Publicado por: jvmjunior en Miércoles 27 de Mayo de 2009, 18:10
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.
Título: Re: Como desbordar la memoria con este Programa??
Publicado por: Eternal Idol en Miércoles 27 de Mayo de 2009, 19:01
Mejor averigua el concepto de desbordamiento de buffer (http://es.wikipedia.org/wiki/Desbordamiento_de_buffer); la solucion ya la tenes.