gpt4 book ai didi

c - 利用 C 中的 system() 调用

转载 作者:太空宇宙 更新时间:2023-11-04 08:10:28 25 4
gpt4 key购买 nike

我在名为 vulnerable.c 的文件中有以下代码:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main() {
gid_t egid = getegid();
setregid(egid, egid);
system("echo testing");

return 0;
}

以下是易受攻击的可执行文件的权限:

-rwxr-sr-x 1 test cool 8192 Sep 28 2016 易受攻击

在我的主目录中,我创建了一个名为“echotest”的新目录,并放入了一个 echo.c 文件并进行了编译。 echo.c 文件只是打印出“Exploited!!”。我还更改了我的 PATH 环境变量以包含 $HOME/echotest。

现在,当我运行漏洞时,它应该打印出“Exploited!”但它不是。我在这里错过了什么?

我用“cat”做了一个类似的测试,它起作用了,但没有用回声。任何帮助将不胜感激。

谢谢

最佳答案

问题是 echo 通常是 shell 内置的。如果您希望它可以被利用,您可以将易受攻击的代码更改为:

int main() {
gid_t egid = getegid();
setregid(egid, egid);
system("env echo testing");

return 0;
}

有关此的更多信息,请参阅:How do I prevent bash to use a builtin command?

关于c - 利用 C 中的 system() 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39939853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com