我一直在关注 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空行来表示输入结束来终止该过程。
我相信这就是您所说的“保持管道畅通”的意思。