Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
出于教育原因,我必须利用 C 代码
Programm先设置egid,再用system("/usr/bin/...");Command设置漏洞。
system("/usr/bin/...");
所以我在我的主目录中创建了一个“usr”可执行文件并将路径设置为主目录PATH=$HOME:$PATH
PATH=$HOME:$PATH
我想将bash中的IFS变量更改为/:export IFS='/'
export IFS='/'
不幸的是,当我调用 C 程序时:我的漏洞利用不起作用
有人能告诉我出了什么问题吗?
将 IFS 作为程序调用的一部分添加到system(). 系统使用 执行代码/usr/bin/sh -c。所以你可以做类似于你在 shell 提示符下所做的事情。
system()
/usr/bin/sh -c
system("export IFS='/'; /usr/bin/cmd");
请注意,一旦子进程终止,IFS 集将不再在父进程中可用。
我想我们在同一所大学学习,因为我目前面临同样的问题。我不想给你整个解决方案,因为那太容易了=)
您的 IFS 变量不会被忽略,但它不像您想象的那样工作。当您调用 C-Programm 时,shell 中有一个额外的输出,它指的是 lesspipe。使用此链接 和此德语链接中的信息,您可以解决挑战1 ;)