我有一个实验室,我必须使用这个 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");
}
最佳答案
我在SU学生时解决问题的方法,
两个不同的 shell 同时执行两个循环。 keep_run会持续运行
vulp.c 程序的输入字符串在名为 FILE 的文件中传递。
keep_attack 将首先创建文件,然后删除它,然后创建一个指向属于根目录的目标文件的符号链接(symbolic link)。为了使我们的攻击成功,我们需要以下命令的执行顺序:
keep_attack>>触摸/tmp/XYZ
keep_run >> 运行 vulp 并检查文件(执行访问命令)
keep_attack >> rm/tmp/XYZ
keep_attack >> ln –s target_file/tmp/XYZ
keep_run >> 到达尝试打开文件的命令
*(确保该程序具有 set-uid 并且由 root 拥有 - setuid program owned by non-root user )
关于c - 竞态条件漏洞实验室,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22189847/