简单的 setuid 二进制利用

简单的 setuid 二进制利用

我有一个 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

改成。lscat

ls列出目录,但不显示文件。 cat这样做。

相关内容