C: IFS System()漏洞

3

出于教育目的,我必须开发一个C代码。

程序首先设置了egid,然后使用system("/usr/bin/...");命令执行漏洞。

因此,我在我的主目录中创建了一个'usr'可执行文件,并将路径设置为Home PATH=$HOME:$PATH

我想要在bash中更改IFS变量为 / :export IFS='/'

不幸的是,当我调用C程序时:我的漏洞利用无法正常工作。

有人能告诉我哪里出了问题吗?


欢迎来到Stack Overflow。这是一个情况,你应该展示你所尝试过的代码作为一个SSCCE(短小,自包含,正确(编译)的例子),既可以证明你在问题上付出了一些努力,也让我们能够看到你正在做什么。请尽快阅读[FAQ]。 - Jonathan Leffler
2个回答

2
将IFS添加为程序调用system()的一部分。系统使用/usr/bin/sh -c执行代码。因此,您可以执行与在Shell提示符中执行的类似操作。
system("export IFS='/'; /usr/bin/cmd");

请注意,一旦子进程终止,IFS设置将不再在父进程中可用。

我无法更改系统命令中的字符串。我必须利用它。因此,我希望给定的system("/usr/bin/...")重定向到我的usr可执行文件。类似地,在system("./myProg")中使用相对路径也可以工作。我认为通过更改IFS变量,我也可以在这种情况下做到这一点?我错了吗? - nikmaster
你能发布完整的代码吗?我不确定你想要实现什么? - P.P

1

我猜我们在同一所大学学习,因为我目前也面临着同样的问题。我不想给你整个解决方案,那会太容易了 =)

你的IFS变量并没有被忽略,但它的作用可能不是你所想象的那样。当你调用C程序时,终端会有一个额外的输出,指向lesspipe。通过 this link 和这个德语链接 中的信息,你就能够解决challenge1了 ;)


只有一个漏洞吗?我在cat.c中没有看到漏洞。 - BvuRVKyUVlViVIc7
1
猫的例子可以通过向PATH变量添加条目来轻松解决。 - boindiil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接