来自:一言
var xhr = new XMLHttpRequest(); xhr.open('get', 'https://v1.hitokoto.cn/'); xhr.onreadystatechange = function () { if (xhr.readyState === 4) { var data = JSON.parse(xhr.responseText); var hitokoto = document.getElementById('hitokoto'); hitokoto.innerText = data.hitokoto; } } xhr.send();
这道大题是我最有思路的一道题,可惜最后卡在最后一步,解密哥斯拉的返回流量.[aru_41]
(不然感觉有希望进线下了[aru_15])
网管小王最近喜欢上了ctf网络安全竞赛,他使用“哥斯拉”木马来玩玩upload-labs,并且保存了内存镜像、wifi流量和服务器流量,让您来分析后作答:(本题仅1小问)
小王往upload-labs上传木马后进行了cat /flag,flag内容为_____________。(压缩包里有解压密码的提示,需要额外添加花括号)
1.下载附件后,解压后发现三个文件:Windows 7-dde00fa9.vmem 服务器.pcapng 客户端.cap
2.根据该项目叫wifi,所以推测解题关键就在客户端.cap里,所以用Wireshark打开客户端.cap后,如下图:
发现全是加密的wifi包
3.大家都知道如果要解密wifi流量包的话,需要知道wifi的ssid和密码才可以解密,所以接下来我们就需要拿到Windows 7-dde00fa9.vmem镜像文件中的wifi密码,利用volatility(kali自带)获取镜像信息:
volatility -f 'Windows 7-dde00fa9.vmem' imageinfo
4.获取到镜像的profile,知道是win7系统,关于系统保存的wifi密码文件地址:如果是Windows Vista或Windows 7,保存在c:\ProgramData\Microsoft\Wlansvc\Profiles\Interfaces\[网卡Guid],每个无线网络对应一个XML文档,所以我们需要获取这个遍历这个镜像中的文件:
volatility -f 'Windows 7-dde00fa9.vmem' --profile=Win7SP1x86_23418 filescan > 1.txt
5.接下来要查找存放wifi密码的文件,找了一遍没有发现xml文件,然后回过头去看题目的提示:(压缩包里有解压密码的提示,需要额外添加花括号),这不是很明显了吗?[aru_31],直接线查找zip的文件,果然在第二个zip处找到了一个My_Wifi.zip文件
6.找到文件后将其导出:
volatility -f 'Windows 7-dde00fa9.vmem' --profile=Win7SP1x86_23418 dumpfiles -Q 0x000000003fdc38c8 --dump-dir=./
7.成功获取到zip文件,不过需要自己重命名过去,下载到本机后重命名为My_Wifi.zip,然后解压过程中发现密码??[aru_25],用rar打开压缩包后发现解压密码提示:
password is Network Adapter GUID(密码是网卡id)
8.之前说到win7的wifi密码就存放在c:\ProgramData\Microsoft\Wlansvc\Profiles\Interfaces\[网卡Guid]中,所以我们继续在镜像文件中搜索,直接搜索Interfaces:
9.拿到解压密码:{529B7D2A-05D1-4F21-A001-8F4FF817FC3A},解压后拿到wifi密码,用ie浏览器打开。
10.成功拿到wifi密码和ssid,233@114514_qwe My_Wifi,那就可以尝试解密wifi流量包了。设置方法:编辑-首选项-Protocols-IEEE 802.11-Edit,设置好后点击ok,就可以看到解密的流量包了[aru_22]
11.现在我们已经解密到wifi包了,但是不知道请求的服务器地址是多少,所以现在打开 服务器.pcapng 开始查看网管上传哥斯拉时候的包,上传包肯定是POST了,所以直接筛选post包即可。
12.拿到了请求的包,先进行url解码,再找个php在线执行看一下那段编码的内容:
12.相信大家一眼就看出来了就是哥斯拉的马,并且使用了xor_base64的加密器,配置也是默认配置,密码:pass 密钥:key,也拿到了服务器ip:42.192.84.152 ,所以我们返回到wifi流量包,直接筛选服务器ip的包,找到几个哥斯拉加密的返回包
13.接下来需要解密哥斯拉的流量,在网上找到一个文章:https://www.freebuf.com/sectool/285693.html ,解密脚本如下:
<?php
function encode($D,$K){
for($i=0;$i<strlen($D);$i++){
$c = $K[$i+1&15];
$D[$i] = $D[$i]^$c;
}
return $D;
}
$pass='pass';
$payloadName='payload';
$key='3c6e0b8a9c15224a';
echo gzdecode(encode(base64_decode('需要解密的内容'),$key));
?>
14.根据上面的文章可以知道(对于PHP_XOR_BASE64
加密方式来说,前后各附加了16位的混淆字符),所以我们拿到的流量要先删除前16位和后16位字符
原始返回包:72a9c691ccdaab98fL1tMGI4YTljMn75e3jOBS5/V31Qd1NxKQMCe3h4KwFQfVAEVworCi0FfgB+BlWZhjRlQuTIIB5jMTU=b4c4e1f6ddd2a488
真正内容:fL1tMGI4YTljMn75e3jOBS5/V31Qd1NxKQMCe3h4KwFQfVAEVworCi0FfgB+BlWZhjRlQuTIIB5jMTU=
然后将需要解密的内容改进脚本,丢到php环境中运行即可拿到flag
Flag
flag{5db5b7b0bb74babb66e1522f3a6b1b12}