这是系统安全的功课。
作业分为两部分。给出了2个可执行文件。 exectest和exectestsecure。
反编译后,我发现以下内容:
执行测试
...
execv("ls",...);
...
执行安全
...
execv("/bin/ls",...);
...
目的是打印世界您好!而不是运行ls命令。
在第一部分中,我在主目录中创建了helloworld程序并将其编译为ls。然后,我将主目录添加到PATH。
我不知道该如何为使用绝对路径的exectestsecure做些什么。
以root身份运行exectestsecure有加分。红利使用带有setuid(0)的可执行文件,并具有正确的权限。我认为,如果我找到一种方法来劫持对/ bin / ls的呼叫,那么我也可以回答奖励问题。
最佳答案
如果libc是动态链接的,则可以尝试用LD_PRELOAD覆盖execv()。您将需要一些工具:objdump,dlsym,strace。例如,找到遵循here的路径。
关于linux - 用绝对路径覆盖exec systemcall,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21523162/