首页
社区
课程
招聘
gcc关闭地址随机化,attach 进程时候发现函数地址变化。

我在测试一个题目,出现 Got EOF while reading in interactive 现象。
我所编译得文件已经关闭了地址随机化,在exp 运行过程中还是发现了地址变化。详细如下:
1;我编译得命令:

gcc -m32 -fno-stack-protector -no-pie -o test test.c

2;checksec 查寻如下:
图片描述
3;使用gdb调试,print 函数地址
图片描述
4;编写exp ,运行发现错误
图片描述
5;调整exp ,进行调试,代码如下:
图片描述
6;调试发现,在exp执行过程中system 得地址已经改变
图片描述
7;补充说明:python使用得是PyCharm 生成得虚拟运行环境。
8;源码:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void vulnerable_function()
{
char buf[128];
read(STDIN_FILENO, buf, 256);
}
int main(int argc, char** argv)
{
vulnerable_function();
write(STDOUT_FILENO, "Hello, World\n", 13);
}

请问:为什么会产生如此现象?

收藏
1条回答
amazing_516022 2021-6-11

-no-pie只是针对编译的ELF文件做了随机化,libc加载地址跟/proc/sys/kernel/randomize_va_space有关,echo 0 > /proc/sys/kernel/randomize_va_space再测下看

回复 已采纳