【发布时间】:2016-02-23 18:53:01
【问题描述】:
这个程序有什么漏洞?
我目前被困在一个黑客练习中,不知道该怎么做!
你认为“路径”是什么意思?因为我认为这很重要。
#include <fcntl.h>
#include <limits.h>
#include <pwd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
int main(int argc, char *argv[])
{
char buf[1024], path[PATH_MAX + 1];
int fd, i;
strcpy(path, getpwuid(getuid())->pw_dir);
strcat(path, "/script.sh");
strcpy(buf, "#!/bin/bash\necho Hello.\ndate\nrm \"$0\"\n");
umask(0);
if ((fd = open(path, O_CREAT | O_EXCL | O_WRONLY, 02760)) < 0) {
perror("open");
return 1;
}
write(fd, buf, strlen(buf));
close(fd);
printf("please wait for us to run your script");
fflush(stdout);
for (i = 0; i < 5; i++) {
printf(".");
fflush(stdout);
sleep(1);
}
printf(" starting script\n");
execl("/bin/sh", "/bin/sh", path, (char *) 0);
perror("execl");
return 0;
}
【问题讨论】:
-
SO 不是咨询网站。
-
你是要解释别人的代码吗?
-
@WeatherVane 是的,这是一个黑客练习,我正在努力寻找弱点
-
@CarolineRudolph 您知道我们中的一些人是专业开发人员,他们不得不在备份上花费额外的时间并在 AV 软件上花费大量资金来防止恶意软件进入我们的系统?您是在向我们寻求黑客练习方面的帮助吗?
-
呃,没有。简单得多。看看“printf(“请等待我们运行你的脚本”);”迅速的。也许程序正在等待别的东西?在这种情况下,您可能还想查看“umask(0)”语句及其含义。
标签: c privilege-elevation