用绝对路径覆盖exec系统调用

时间:2014-02-03 08:59:56

标签: linux security exec system-calls

这是系统安全的功课。

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

反编译后,我发现以下内容:

exectest

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

exectestsecure

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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