我遇到了一个有缓冲区溢出缺陷的 C 程序。我们需要让程序以我们的方式工作。根据我的理解,缓冲区溢出会覆盖下一个内存位置。如果我们考虑以下代码,如果密码是goodpassword,程序将授予访问权限。我想利用缓冲区溢出漏洞并将输入作为aaaaaaaaaaaaaaaaaaaaaaa(24 a's)覆盖下一个内存位置,以便程序接受输入授予访问权限。
但是,它无法正常工作,因为我认为该程序正在崩溃并且我无法利用该漏洞。你能告诉我我的方法出了什么问题吗?
#include <stdio.h>
#include <string.h>
int IsPasswordOk( ) {
char password[13];
gets(password);
if(!strcmp(password,"goodpassword"))
return 1;
else
return 0;
}
int main(int argc, char* argv[]) {
int pwdStatus;
puts("Enter password");
pwdStatus = IsPasswordOk();
if(!pwdStatus) {
puts("Access denied!");
return -1;
}
else puts("Access granted!");
return 0;
}