Joe*_*oeB 8 c stack buffer frames overflow
我正在阅读Hacking:剥削艺术(第2版),我目前正在讨论缓冲区溢出问题.
在第一个示例中,变量按以下顺序声明/初始化:
int auth_flag = 0;
char password_buffer[16];
Run Code Online (Sandbox Code Playgroud)
这个例子接着解释,你可以使用gdb来检查auth_flag
和password_buffer
的地址,你会发现auth_flag
的地址是高于password_buffer
的.要记住的事情:我在Macbook Pro(英特尔处理器,64位)上的Virtualbox中运行Ubuntu中的所有这些.
我编译了第一个例子的代码,如下所示: gcc -g -fno-stack-protector -o auth_overflow auth_overflow.c
正如所料,auth_flag
地址高于password_buffer
's.
为了解决上面提出的问题,作者解释说你应该切换声明的顺序:
char password_buffer[16];
int auth_flag = 0;
Run Code Online (Sandbox Code Playgroud)
我以相同的方式编译代码: gcc -g -fno-stack-protector -o auth_overflow2 auth_overflow2.c
不幸的是,我没有看到auth_flag
地址低于password_buffer
.事实上,它仍然更高.为什么是这样?我究竟做错了什么?
归档时间: |
|
查看次数: |
334 次 |
最近记录: |