Dudas de Programacion » Lenguajes de Proposito General » C

Como desbordar el buffer en este programa

(2 posts)
  • Started 2 years ago by jvmjunior
  • Latest reply from andpozo
  1. jvmjunior
    Member

    Necesito demostrar un caso de prueba q detecte el desbordamiento del buffer en memoria monton que se puede producir en este programa:

    1. #include <stdio.h>
    2.  
    3. void comprobar (char *pas) {
    4. char *passwd;
    5.  
    6. passwd = (char *) malloc (sizeof (char) * 8);
    7. strcpy(passwd, pas);
    8. passwd = (char *) strlwr(passwd);
    9. if (strcmp(passwd, "mipas")==0) printf ("Password correcto. ");
    10. else printf ("Password incorrecto. ");
    11. return;
    12. }
    13.  
    14. int main(int argc, char *argv[]) {
    15. int i;
    16.  
    17. comprobar (argv[1]);
    18. printf ("Finaliza. ");
    19. scanf("%d", &i);
    20. return 0;
    21. }

    He intentado con muchos valores y no logro encontrar la solución, yo utilizo el Ubuntu con (x86) como referencia.

    Saludos.

    Posted 2 years ago #


  2. andpozo
    Member

    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

    Posted 2 years ago #

Reply

You must log in to post.

937 posts in 395 topics over 36 months by 350 of 788 members. Latest: redundantlogic2, shianim, pepered

Acerca de...

Dudas de Programación es una Web, dentro del proyecto aulambra.com que nace con la idea de propocionar un foro de consultas sobre diferentes temas de programación. Orientado a ayudar a los internautas hispano-hablantes en Internet.

Ir al Blog de Linea de Código

Otras Webs