У меня есть доступ к папке как группы (включая пароль). Есть 2 файла: file & secret: Это разрешения:
-rwsr-sr-x 1 корневой корень 8,9 тыс. 29 апр. 2016 г. файл
-r - r - r-- 1 корневой корень 944 28 апреля 2016 г. file.c
-rw ------- 1 root root 33 мая 14 22:31 secret
Я должен получить содержимое секрета. Частью файла file.c является следующий код:
{
if(argc !=2){
printf("%s [executable to run on the grid]\n",argv[0]);
exit(0);
}
FILE *fp = fopen("key", "r");
if (getuid() == 0) {
/* process is running as root, drop privileges */
initgroups("filepointers",1003);
if (setgid(1003) != 0)
printf("setgid: Unable to drop group privileges:");
if (setuid(1003) != 0)
printf("setuid: Unable to drop user privileges:");
}
После этого он открывает секрет и форкс + execls - я пропустил какой-то неуместный код.
if (pid ==0){
int error = execl(argv[1],"command",NULL);
if(error ==-1)
perror("execl");
}
exit(0);
}
Есть идеи, как превзойти разрешения? Судо было бы логичным ответом, но, поскольку это не входит в мои полномочия, это не вариант. Я думаю, что мне нужно что-то сделать с setuid - но понятия не имею, как. Любые советы будут оценены. :)