gpt4 book ai didi

c - 修改我不是其所有者的程序

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:15:45 26 4
gpt4 key购买 nike

对于一个以安全为导向的网站,我有一个挑战是破解一个应用程序。这是该类别的第一个挑战,我必须承认我在这方面完全没有经验(遗憾的是,该挑战中没有链接任何文档)。

所以在这里我不是在寻求答案,而是更多地寻求找到答案的方法。

挑战:

我使用 SSH 连接到一台机器,然后进入这个文件夹:

binary1@challenge02:~$ ls -la
total 24
dr-xr-x--x 2 binary1 binary1 4096 mai 4 2013 .
dr-xr-xr-x 14 root root 4096 mai 4 2013 ..
-r-sr-x--- 1 binary1cracked binary1 8059 mai 4 2013 binary1
-r--r----- 1 binary1 binary1 121 mai 4 2013 binary1.c
-r--r----- 1 binary1cracked binary1cracked 14 févr. 8 2012 .passwd

我的用户是binary1,我的目标是读取.passwd

Binary1文件为binary1cracked用户所有,至于.passwd,所以我认为它可以读取.passwd文件。我看一下 binary1 的源代码;

binary1@challenge02:~$ cat binary1.c
#include <stdlib.h>
#include <stdio.h>

int main(void)
{
system("ls /challenge/binary/binary1/.passwd");
return 0;
}

我想用 cat 替换 ls。但我显然不能,因为我没有这个文件的写权限。

我不知道从这里开始做什么。我考虑过启动程序,让它在某个时候挂起,然后修改内存以将 ls 更改为 cat 但我不知道该怎么做。

我走的路好吗?有关如何执行此操作的任何建议?

谢谢。

最佳答案

setuid 位设置在 binary1 文件上,因此如果您能够在适当修改后执行 binary1 文件,您应该能够读取该文件。

binary1 文件的组具有执行权限...并且该组是 binary1 ,因此您将能够执行该文件...并且由于设置了 setuid 位,进程的所有者将是 binarycracked 这也是.passwd 文件的所有者。因此,如果您能够获得将 .passwd 读入 binary1 文件的代码,那么您就能够读取 .passwd。

根据 Brandin 的提示可能的解决方案..

PATH=~:$PATH; export PATH;

ls 放在您的主目录中,内容为:

$ cat .passwd

然后执行

 $ ./binary1

关于c - 修改我不是其所有者的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22113642/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com