“保持管道畅通”是什么意思?

plu*_*ker 9 process pipe cat

我一直在关注 Linux 应用程序的各种漏洞利用练习的演练。我非常了解这些内容,但是有些人指的是使用 cat 来“保持管道打开”,例如这里。

例如:

(python2 exploit.py ; cat) | ./programToExploit
Run Code Online (Sandbox Code Playgroud)

“保持管道打开”在实践中的实际含义是什么,以及如何像上面的命令一样保持管道打开?

Kus*_*nda 12

你试了吗?

查看两者的区别

echo 'ls' | sh -s
Run Code Online (Sandbox Code Playgroud)

和

( echo 'ls'; cat ) | sh -s
Run Code Online (Sandbox Code Playgroud)

或者,

{ echo 'ls'; cat; } | sh -s
Run Code Online (Sandbox Code Playgroud)

在这里,sh -s将启动一个 shell 会话,该会话从标准输入 ( -s)读取要执行的命令。

在第一个示例中,shell 将简单地执行ls并退出(因为没有更多输入)。

在第二个和第三个示例中,shell 将执行ls,然后等待直到没有更多输入。to 的输入流sh -s首先由echo命令生成,但随后cat接管了角色。该cat进程将从父 shell 会话中读取并通过管道将命令传递到sh -s. 如果您键入ls或任何其他命令(不会提示您键入它),shell 将执行这些命令。

这将一直持续到您cat通过按下Ctrl+D空行来表示输入结束来终止该过程。

我相信这就是您所说的“保持管道畅通”的意思。