我有一个 setuid 程序,它以这种方式列出文件:
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
system("ls /challenge/binary/binary1/.passwd");
return 0;
}
我需要的是让程序公开文件的内容,而不是简单地列出文件的名称。所以我尝试创建一个别名来改变ls这边走:
alias ls='cat'
但还是不行。你能给我指出正确的方向吗?
答案1
别名只存在于定义它们的 shell 中,并system
启动一个新 shell。该 shell 也不会读取~/.bashrc
通常定义别名的其他文件:只有交互式 shell 才会读取。有些 shell(但不是全部)会读取另一个文件,但有一种独立于 shell 的方法可以利用这一点。
Shell 命令查找按以下顺序尝试以下元素:
- 别名 — 没有。
- 功能 — 不,出于同样的原因。
- 内置 — 没有。
- 命令
PATH
— 默认情况下必须是这个。
因此,请确保查找ls
能够$PATH
找到该cat
程序。
答案2
改成。ls
cat
ls
列出目录,但不显示文件。 cat
这样做。