使用 netcat 并写入远程标准输入 shell

Use netcat and write to stdin for remote shell

我正在 运行 服务器上利用缓冲区溢出漏洞(针对大学),我能够将进程重定向到执行 shell。 我的攻击看起来像这样:

perl -e 'print "\xaa\xaa\..."' | nc -q0 machineAtUni 1234

因此服务器从套接字读取,eip 将被覆盖并执行shell。问题是我从 shell 看到了一些消息,但我无法插入任何内容。我认为 shell 本身从 stdin 读取到 EOF 但我怎样才能实现我可以向它发送命令(连接保持打开并且我能够写入 stdin)?

netcat 的标准输入连接到管道,而不是您的终端,因此它不会发送您键入的任何内容。你可以这样做:

{ perl -e 'print "\xaa\xaa\..."'; cat; } | nc -q0 machineAtUni 1234

这样当 perl 脚本完成时,cat 将从终端读取并写入管道。