假设我有两个 shell(A 和 B)。我对第一个 shell 执行以下命令:
nc -lvp 7777 -e /usr/bin/bash
在第二个 shell 中我执行:
nc localhost 7777
之后,我在第一个第二个 shell 中输入“某些内容”,但是标准错误位于下面的第一个 shell 中:
bash: line 1: something: command not found
我想放标准错误在第二个 shell 中,而不是第一个 shell 中。我该怎么办?
答案1
这个想法是可行的。我刚刚做了一些测试,但由于引号问题无法让它工作。也许有人可以让它工作?
听众:
nc -lvp 7777 -e '/usr/bin/bash -c "bash 2>&1"'
但您可以手动执行此操作。从已打开的 shell 中,您可以使用 stderr 重定向启动另一个 shell。因此,在建立连接并拥有 shell 后,您可以运行以下命令。
bash 2>&1
它打开了另一个 shell,但这次 stderr 重定向到 stdout。
答案2
这在 Windows 上有效。基于此示例,您应该找到一种方法使其在 Linux 上工作。它运行两个 cmd.exe,但它完成了工作。
ncat 127.0.0.1 4444 -e "cmd /c (cmd 2>&1)"