修改程序我不是所有者(Modify a program I'm not the owner

2019-10-19 11:23发布

对于面向安全的网站时,我有包括开裂的应用程序是一个挑战。 这是该类别的第一个挑战,我必须承认我有过一次在这个没有经验(和可悲的是没有文件是在挑战链接)。

所以在这里我不要求的答案,但更多的方式来找到它。

挑战:

我使用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;
}

在那里,我想,以取代lscat 。 但我显然不能,因为我没有这个文件的写权限。

我坚持没有什么从这里做的想法。 我想到了启动程序,把它挂在某个时刻,并修改改变内存lscat ,但我不知道如何做到这一点。

我是良好的道路? 任何建议如何做到这一点?

谢谢。

Answer 1:

由于binary1为setuid binary1cracked并调用system ,你应该能够调用binary1与修改PATH ,因此做任何用户binary1cracked可以做。 例如,提供自己版本的ls ,读取.passwd文件,并将该ls到您的自定义路径。

使用bash,你可以在提示符下调用这样的命令提供自定义路径

 $ PATH=/my/custom/path ./binary1


Answer 2:

该setuid位上binary1文件中设置的,所以如果你能够执行适合modificaton后binary1文件,你应该能够读取该文件。

binary1文件的组具有执行权限......,组为binary1,这样你就可以执行文件....而且由于setuid位设置,过程的所有者将binarycracked这也是主人.passwd文件。 所以,如果你能得到的代码读取.passwd入binary1文件,你将能够阅读.passwd。

基于Brandin的提示可能的解决方案..

PATH=~:$PATH; export PATH;

地方ls在你的home目录与内容:

$ cat .passwd

然后执行

 $ ./binary1


Answer 3:

要知道,重要的是,“系统”使用shell执行它的参数,尤其是,它调用

 /bin/sh -c "ls /challenge/binary/binary1/.passwd"

因此,通过了解/ bin / sh的是如何找到程序“ls”的执行,你可以弄清楚如何与你想要的东西取代它。 这并不需要修改任何给定的文件。



文章来源: Modify a program I'm not the owner of