免考final linux提权与渗透入门——Exploit-Exercise Nebula学习与实践 (2)

02-1

level03——计划任务

这个关卡有一个计划任务,每隔2分钟执行/home/flag03目录下的writable.sh。

我们可以看到writeable.sh的内容。

03-1

这个脚本会自动执行writable.d里面的所有文件,接着有删除这个脚本。

而计划任务crontab是flag03用户创建的,我们可以在writable.d中创建脚本来完成操作。

03-2

我们在writable.d的目录下创建一个run脚本。

/bin/getflag > /tmp/20155110wangyifan

这个脚本执行/bin/getflag,并把结果重定向到/tmp/20155110wangyifan文件中。

等待两分钟,我们在/tmp目录下发现20155110wangyifan这个文件。

03-3

也就是说crontable自动执行了/bin/getflag程序

level04——越权获得token

这个关卡需要我们获取token文本文件的内容。目前我们的权限是读取不了的。

04-1

除了root权限外,只要flag04用户可以对它进行读写操作。这里有一个flag04程序,我们需要利用这个程序的漏洞,来获得token。

#include <stdlib.h> #include <unistd.h> #include <string.h> #include <sys/types.h> #include <stdio.h> #include <fcntl.h> int main(int argc, char **argv, char **envp) { char buf[1024]; int fd, rc; if(argc == 1) { printf("%s [file to read]\n", argv[0]); exit(EXIT_FAILURE); } if(strstr(argv[1], "token") != NULL) { printf("You may not access \'%s\'\n", argv[1]); exit(EXIT_FAILURE); } fd = open(argv[1], O_RDONLY); if(fd == -1) { err(EXIT_FAILURE, "Unable to open %s", argv[1]); } rc = read(fd, buf, sizeof(buf)); if(rc == -1) { err(EXIT_FAILURE, "Unable to read fd %d", fd); } write(1, buf, rc); }

注意这段代码:

if(strstr(argv[1], "token") != NULL) { printf("You may not access \'%s\'\n", argv[1]); exit(EXIT_FAILURE); } fd = open(argv[1], O_RDONLY);

flag04会把命令行参数作为文件名并打开,但是文件名不能包含“token”字符串,否则会退出程序。

还是祭出我们的软链接大法,迷惑flag04程序。

04-2

这就是flag04账号的密码,登录flag04账号执行getflag,完成这一关的任务

免考final linux提权与渗透入门——Exploit-Exercise Nebula学习与实践

level05——ssh密钥窃取

在这一关,我们需要找到一个弱权限的目录,然后通过它来提权。

我们需要关注的是.backup和.ssh这两个目录。

05-1

.ssh目录我们进不去。只能先在.backup目录里面探索一下。

05-2

我们把backup-19072011.tgz解压到/tmp目录下(因为权限不过无法在当前目录解压)

05-3

原来是ssh的公钥和私钥!直接把它copy到/home/level05然后ssh登录flag05的账号就能完成此关卡了!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwpfgy.html