我在名为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测试冷却8192 2016年9月28日易受攻击
在我的主目录中,我创建了一个名为“echotest”的新目录,放入echo.c文件并编译它。echo.c文件刚刚打印出“已利用!!". 我还将PATH环境变量更改为包含$HOME/echotest。
现在,当我运行vulnerable时,它应该打印出“已利用!”但事实并非如此。我错过了什么?
我用“猫”做了一个类似的测试,但用echo没用。
任何帮助都将不胜感激。
谢谢
最佳答案
问题是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/