本文主要是介绍[SEEDLab]竞争条件漏洞(Race Condition Vulnerability),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
[SEEDLab]竞争条件漏洞(Race Condition Vulnerability)
实验PDF链接
Introduction
我们首先考虑这样的一个情景,我们有一个名为test的文件,它具有这样的权限:
-rwsr-xr-x 1 root seed 40 Jun 9 22:45 test
作为seed用户,我们无法对于此文件进行写入:
但是,假设我们的系统中存在一个程序setuid_modifi.c
:
#include<stdio.h>
#include<unistd.h>int main(){char * fn = "test";char buffer[60];FILE *fp;scanf("%50s", buffer );if(fp = fopen(fn, "a+") == NULL){printf("Error!");}else{fwrite("\n", sizeof(char), 1, fp);fwrite(buffer, sizeof(char), strlen(buffer), fp);fclose(fp);}
}
由它编译生成的可执行文件,然后执行sudo chown root setuid_modifi
和sudo chmod 4755 setuid_modifi
,此时得到的程序可以被seed用户执行,并且修改test
文件之中的内容。为了避免这种情况,我们可以使用位于标准库unistd.h
中的函数access()
int access(const char* pathname, int mode)
//判断路径为pathname的文件能否以mode的权限打开
//成功返回1,否则返回0
我们可以这样改写我们的程序:
//...
if(!access(
这篇关于[SEEDLab]竞争条件漏洞(Race Condition Vulnerability)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!