请高手指教这个栈溢出问题
我使用的是ubuntu 12.04 系统。
程序代码:#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int check_authentication(char *password) {
int auth_flag = 0;
char password_buffer[16];
strcpy(password_buffer, password);
if(strcmp(password_buffer, "brillig") == 0)
auth_flag = 1;
if(strcmp(password_buffer, "outgrabe") == 0)
auth_flag = 1;
return auth_flag;
}
int main(int argc, char *argv[]) {
if(argc < 2) {
printf("Usage: %s <password>\n", argv[0]);
exit(0);
}
if(check_authentication(argv[1])) {
printf("\n-=-=-=-=-=-=-=-=-=-=-=-=-=-\n");
printf(" Access Granted.\n");
printf("-=-=-=-=-=-=-=-=-=-=-=-=-=-\n");
} else {
printf("\nAccess Denied.\n");
}
}
以上是代码。
之后我利用栈溢出,在password_buffer数组中输入了一个很大的内容,并最终将一个新地址写入了调用函数的返回地址中。但是结果却没有跳转到新地址运行,而是直接提示错误就退出了。
请高手指教这是不是和系统有一定关系呢。










看看