我有一个实验室,我必须使用这个SeedUbuntu虚拟机来处理竞争条件漏洞。有一个C程序,我需要利用它来创建攻击,所以我可以访问影子文件。以下是实验室与程序和PDF信息的链接:http://www.cis.syr.edu/~wedu/seed/Labs/Vulnerability/Race_Condition/ 我感到困惑的是如何处理这个问题。我可以在单独的终端中编译和运行vulp.c程序和shell脚本,但我接下来该怎么办?我需要执行哪种代码或命令?我很困惑,我真的很感激任何协助解决这个任务!谢谢!
/* vulp.c */
#include <stdio.h>
#include<unistd.h>
#define DELAY 10000
int main()
{
char * fn = "/tmp/XYZ";
char buffer[60];
FILE *fp;
long int i;
/* get user input */
scanf("%50s", buffer );
if(!access(fn, W_OK)){
/* simulating delay */
for (i=0; i < DELAY; i++){
int a = i^2;
}
fp = fopen(fn, "a+");
fwrite("\n", sizeof(char), 1, fp);
fwrite(buffer, sizeof(char), strlen(buffer), fp);
fclose(fp);
}
else printf("No permission \n");
}
答案 0 :(得分:0)
当我还是SU的学生时,我解决了这个问题,
两个不同的shell同时执行两个循环。 keep_run将继续运行
带有输入字符串的vulp.c程序在名为FILE的文件中传递。
keep_attack将首先创建文件,然后将其删除,然后创建一个指向我们的目标文件的符号链接。我们需要以下命令执行顺序才能使攻击成功:
keep_attack&gt;&gt; touch / tmp / XYZ
keep_run&gt;&gt;运行vulp并检查文件(执行访问命令)
keep_ attack&gt;&gt; rm / tmp / XYZ
keep_attack&gt;&gt; ln -s target_file / tmp / XYZ
keep_run&gt;&gt;到达试图打开文件的命令
*(确保程序具有set-uid并由root拥有 - setuid program owned by non-root user)