缓冲区溢出 c(获取函数)

阿维·沙巴特

有以下代码,我需要返回一个低于 0x30 且不等于 0 或 2 的访问级别:

int login() {
int accessLevel = 0xff;
char username[16];
char password[32];
printf("Username (max 15 characters): ");
gets(username);
printf("Password (max 31 characters): ");
gets(password);

if (!strcmp(username, "admin") && !strcmp(password, "{{ create_long_password() }}")) {
    accessLevel = 2;
} else if (!strcmp(username, "root") && !strcmp(password, "{{ create_long_password() }}")) {
    accessLevel = 0;
} else if (!strcmp(username, "artist") && !strcmp(password, "my-password-is-secret")) {
    accessLevel = 0x80;
}

return accessLevel;
}

我输入了用户名 16 'a',它将 accessLevel 重置为 0(然后添加了将访问设置为 20 并为我提供所需输出的空间)。但是,我希望缓冲区覆盖密码,而不是 accessLevel,因为它是“后续记忆”。我想我误解了缓冲区的工作原理并希望得到解释。另外,为什么第 16 个字符重置为 0?

提前致谢!

灌木丛

局部变量栈上(假设有排序堆叠)不保证在任何特定的顺序。它在很大程度上取决于变量的类型和每个变量所需的对齐方式,并且可以根据编译器或优化设置而改变。

在这种情况下,听起来变量是按照它们在代码中出现的顺序压入堆栈的,这意味着它们的地址会逐渐减少。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Heartbleed错误是C中经典缓冲区溢出漏洞利用的体现吗?

来自分类Dev

缓冲区数组在C中的for循环中溢出

来自分类Dev

为什么C没有像strcpy()这样使用函数并自动检查缓冲区大小以防止缓冲区溢出错误?

来自分类Dev

获取缓冲区的大小

来自分类Dev

使C不受缓冲区溢出和其他错误影响的选项?

来自分类Dev

修改具有缓冲区溢出漏洞的C函数的返回地址

来自分类Dev

C缓冲区溢出中的链接列表

来自分类Dev

试图重新分配内存的堆缓冲区溢出。C语言

来自分类Dev

C中的缓冲区溢出,具有分配双精度数组的功能

来自分类Dev

尝试使用缓冲区溢出调用隐藏函数

来自分类Dev

消除线程中的缓冲区溢出(C)

来自分类Dev

消除线程中的缓冲区溢出(C)

来自分类Dev

缓冲区数组在C中的for循环中溢出

来自分类Dev

为什么C没有像strcpy()这样使用函数并自动检查缓冲区大小以防止缓冲区溢出错误?

来自分类Dev

仅当超出范围时C缓冲区溢出

来自分类Dev

递归函数中的缓冲区溢出

来自分类Dev

C中的缓冲区溢出与获取

来自分类Dev

C缓冲区溢出中的链接列表

来自分类Dev

GNU C库中的一个缓冲区溢出漏洞

来自分类Dev

C-缓冲区溢出详细信息

来自分类Dev

缓冲区溢出漏洞利用更改函数调用

来自分类Dev

C程序char缓冲区意外溢出

来自分类Dev

缓冲区溢出 C

来自分类Dev

C 堆栈缓冲区溢出

来自分类Dev

C中的堆栈粉碎/缓冲区溢出

来自分类Dev

Linux:简单 C 程序的缓冲区溢出导致 SIGBUS

来自分类Dev

为什么会出现缓冲区溢出?我怎样才能避免它?[C++]

来自分类Dev

c ++缓冲区溢出或损坏的变量

来自分类Dev

C中自发的缓冲区溢出

Related 相关文章

热门标签

归档