????????12??C???????????漰???????????????塢????????棬??????????????????

????1??gets()????

??????????????????????????

#include<stdio.h>
int main(void)
{
    char buff[10];
    memset(buff??0??sizeof(buff));

    gets(buff);

    printf(" The buffer entered is [%s] "??buff);

    return 0;
}
 


???????????????????????????gets()???????????????stdin?????????????????????????????????????????????????????????????????????fgets()???檔

????2??strcpy()????

???????????????????????????????????????????????????????????

#include<stdio.h>

int main(int argc?? char *argv[])
{
    int flag = 0;
    char passwd[10];

    memset(passwd??0??sizeof(passwd));

    strcpy(passwd?? argv[1]);

    if(0 == strcmp("LinuxGeek"?? passwd))
    {
        flag = 1;
    }

    if(flag)
    {
        printf(" Password cracked ");
    }
    else
    {
        printf(" Incorrect passwd ");

    }
    return 0;
}
 


???????????????????????????ù???strcpy()??????????????????????“passwd”????????????????????????????“passwd”????????????????????????????????????????????????д“flag”??????????????λ????????“????”???????????????????????flag???λ?????????????????????????????????磺

$ ./psswd aaaaaaaaaaaaa

Password cracked
 


????????????????????????????????????????????????????????????

?????????????????????????? strncpy()??????

?????????????????????????????????????????????????????洢??????????????????????gcc?????????????????????ò???????????‘-fno-stack-protector’???????????????