使用 netcat 侦听器,例如:
nc -l <port> < ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
我可以在一台新机器(没有nc
或 LDAP)上抓取我的 .bashrc :
cat < /dev/tcp/<ip>/<port> > ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
我的问题是:有没有办法nc -l <port>
用 /dev/tcp 而不是模仿我第一行中的功能nc
?
我正在使用的机器是极其坚固的实验室/沙盒环境 RHEL(没有 ssh,没有 nc,没有 LDAP,没有 yum,我无法安装新软件,而且它们没有连接到互联网)
似乎来自一个简单的 shell 重定向为/dev/ptmx
我提供了一个新的伪终端。
$ ls /dev/pts; ls /dev/pts </dev/ptmx
0 1 2 ptmx
0 1 2 3 ptmx
Run Code Online (Sandbox Code Playgroud)
一旦拥有 fd 声明的进程/dev/ptmx
退出,它就会消失,但保留它很简单:
$ PS1='<$(ls -1 "$@" /dev/pts/*|uniq -u)> $ ' \
exec 3<>/dev/ptmx "$0" -si -- /dev/pts/*
</dev/pts/3> $ ls /dev/pts; exec 3>&-
0 1 2 3 ptmx
<> $ ls /dev/pts; exec 3<>/dev/ptmx
0 1 2 ptmx
</dev/pts/3> $ exit
Run Code Online (Sandbox Code Playgroud)
所以看起来简单的open()
就/dev/ptmx
足以得到一个伪终端。我想这会使 shell - (或它进行重定向的进程) - pty 主端的所有者。
但是我如何分配从属端 - 或者我可以分配从属端?如果可以的话——我能用它做什么?我可以影响它的读/写/刷新时间 …