这是系统安全的功课。
作业有两部分。给出了2个可执行文件。 exectest 和 exectestsecure 。
反编译后,我发现以下内容:
exectest
...
execv("ls",...);
...
exectestsecure
...
execv("/bin/ls",...);
...
目标是打印 Hello,World!,而不是运行ls命令。
对于第一部分,我在我的主目录中创建了helloworld程序并将其编译为 ls 。然后我将我的主目录添加到PATH。
我不明白我能为 exectestsecure 做些什么,它使用绝对路径。
以root身份运行exectestsecure有奖励积分。奖金使用setuid(0)的可执行文件,并具有正确的权限。我想如果我找到一种方法劫持对/ bin / ls的调用,我也可以回答红利问题。
答案 0 :(得分:0)
如果libc是动态链接的,您可以尝试使用LD_PRELOAD覆盖execv()。你需要的一些工具:objdump,dlsym,strace。例如,找到关注here的路径。