gpt4 book ai didi

c - 这个c程序有可能破解密码吗?

转载 作者:行者123 更新时间:2023-11-30 21:43:47 26 4
gpt4 key购买 nike

是否可以在不输入字符串Password作为输入的情况下打印密码破解。即使输入的不是密码,是否存在任何内存泄漏或意外行为可以设置标志。

#include<stdio.h>
#include<string.h>
int main()
{
int flag = 0;
char passwd[10];
char password[10];

memset(passwd,0,sizeof(passwd));
fgets(password, sizeof password, stdin);
strcpy(passwd, password);

if(0 == strcmp("Password", passwd)) {
flag = 1;
}

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

}

return 0;
}

最佳答案

OP 第二次进行了重大编辑 - 最好开始一个新问题。 @J.Selva,不要再次更改问题。

在此版本中,以下代码不会检查 fgets() 的返回值(这是一个漏洞利用),但使用password。这会产生一个可能被用来破解的问题。假设之前运行过一次使用正确密码的代码。现在,通过此运行,恶意用户会导致 IO 错误,fgets() 返回 NULLpasswd 的内容不确定,可能是先前 fgets() 调用的值。 memset() 在这里没有帮助,因为它会清除 passwd 而不是 fgets() 使用的内部缓冲区来分配 password.

memset(passwd,0,sizeof(passwd));
fgets(password, sizeof password, stdin);
strcpy(passwd, password);

正确的代码会使用

// memset not needed
// memset(passwd,0,sizeof(passwd));

if (fgets(password, sizeof password, stdin) == NULL) {
Handle_EOForInputError();
return -1;
}
strcpy(passwd, password);

关于c - 这个c程序有可能破解密码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32159269/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com