У меня нет времени на тщательное изучение того, как netcat запускает указанную команду с помощью параметра -e, однако я считаю, что он добивается этого путем разветвления, затем устанавливает стандартный входной вывод разветвленного процесса на подключенный сокет, а затем выполняет команду, используя exec. Если бы это было так, разве это не означало бы, что если бы я запускал клиент ftp, используя оболочку, запущенную с помощью nc -e /bin /sh, он унаследовал бы стандартный ввод и вывод оболочки, которая в настоящее время является соединением с сокетом tcp? Это означало бы, что ftp не должен зависать, не так ли? Или я что-то упустил?
РЕДАКТИРОВАТЬ
Используемый FTP-клиент был netkit-ftp, в то время как используемый netcat был установленным по умолчанию в Kali Rolling.