如何用python控制netcat反向shell



所以我使用https://weibell.github.io/reverse-shell-generator/来生成反向shell并在一个简单的Linux机器上测试它们,我希望能够用一些简单的python套接字来控制反向shell,我想如果我只是发送文本它就会完成这项工作,但是经过一些测试它没有工作。在反向shell生成器中,他们使用nc -lvnp {port}i尝试使用如下所示的代码来尝试控制连接到python服务器的反向shell:

import socket
import threading
import time
port = 2008
ip = socket.gethostbyname(socket.gethostname())
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((ip, port))
def handle_client(client_socket):
print(client_socket)
print("Sending data")
client_socket.send(b"echo hello > test.txt")
data = client_socket.recv(1024)
if data != b"":
print(data)
def main():
print(f"Server started on port: {port} on ip: {ip}")
server.listen()
while True:
client_socket, addr = server.accept()
print(f"Connection from {addr}")
thread = threading.Thread(target=handle_client, args=(client_socket,))
thread.start()
if __name__ == "__main__":
main()

目前这是我的主要脚本,它发送一个命令到反向shell使用echo生成一个文件,当我第一次测试它,它没有工作,我认为我应该听任何来自反向shell的新数据,但这也没有工作,这就是为什么这里有这一行

data = client_socket.recv(1024)
if data != b"":
print(data)

如果任何人有任何解释为什么反向shell不运行我的命令,或任何建议/解决方案来尝试修复它,甚至一些解释neetcat反向shell命令和我的代码之间的差异,这将是非常感谢的

经过一段时间和调试后,我设法找出问题是什么,我将文本作为原始字节发送,修复是让我将字符串编码为utf-8格式或ASCII格式,但我仍然无法控制来自网站的纯netcat有效载荷的反向shell

最新更新