linux - 使用绝对路径覆盖 exec 系统调用

标签 linux security exec system-calls

这是系统安全的作业。

作业有 2 个部分。给出了 2 个可执行文件。 exectestexectestsecure

反编译后发现如下:

执行测试

...
execv("ls",...);
...

exectestsecure

...
execv("/bin/ls",...);
...

目标是打印 Hello, World! 而不是运行 ls 命令。

对于第一部分,我创建了 helloworld 程序并将其编译为我的主目录中的 ls。然后我将我的主目录添加到 PATH 中。

我不明白我能为 exectestsecure 做什么,它使用绝对路径。

以 root 身份运行 exectestsecure 有一些奖励点。奖励使用带有 setuid(0) 的可执行文件,并且具有正确的权限。我认为如果我找到一种方法劫持对/bin/ls 的调用,我也可以回答奖励问题。

最佳答案

如果 libc 是动态链接的,您可以尝试使用 LD_PRELOAD 覆盖 execv()。您将需要一些工具:objdump、dlsym、strace。找到要遵循的路径here例如。

关于linux - 使用绝对路径覆盖 exec 系统调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21523162/

相关文章:

linux - Inotify 动态索引新文件夹

java - Java插件和浏览器如何在内网验证applet的证书?

python - 如何解决Python中的安全问题?

php - 使用 php 剪切 flv 视频

Python matplotlib - Linux 上的大窗口

linux - u-boot-tools mkimage 不允许我构建 arm64 镜像

python - 如何确保 Python 中的设置文件安全?

python - 在 exec() python 中调用私有(private)类函数

javascript - Node.js 产生颜色?

php - CakePHP 2.0 CakeLog 限制日志大小