容器密码
个人赛:
4zL!$WpRkmANv@XFQ#7HdEyU&GpoTb56YZ^Jq83!Wr(tqA%XsPB7f@CY1xRmKH9#Le*WVG9NuvT$kJ2@7b64Tp(FLM#zqRY8Hv%!KU^9C&YXL*powq87Hr
团体赛:
mW7@B!tRp*Xz46Y9#KFUV^J2&NqoHqTpLCE%8rvGW(AX#1k@YL3$M5!bWY*9HLFq7UZR6^T!XoVmPK28J&CY9%6(Arz#tbU4oXYKLp7Wq^FV9H
题目
一、计算机取证 (共10题19.0分)
1.计算机中曾挂载的Bitlocker加密分区的恢复密钥后6位为?(答案格式:6位数字) (1.0分)

012507-559669-054527-667557-173448-699171-415833-700755
700755
2.请写出曾远程连接过该计算机的IP;(答案格式:6.6.6.6) (1.0分)

192.168.50.227
3.计算机中曾挂载的vhd非加密分区驱动器号为?(答案格式:大写,如D) (1.0分)

996600.vhd是非加密的


M
4.接上题,分区中最后修改时间的文件MD5值为?(答案格式:全大写) (1.0分)

0A7152C5AA002A3D65DC5C5C5FAAB868
5.请找到计算机中的Veracrypt加密容器,并写出其解密密码?(答案格式:字母大小写与实际需一致) (6.0分)


1P2P3$$pian5p6p78pian
6.请写出IP为202.113.81.243的发件人向机主发送的邮件附件MD5值;(答案格式:全大写) (1.0分)


导出:

6cf25fff7d2882dbf5722b3b9e382b5f
7.计算机中Will Wight - Cradle Series (Books 1-12)- MOBI.torrent文件的下载地址为?(答案格式:http://...) (1.0分)

http://suprbaydvdcaynfo4dgdzgxb4zuso7rftlil5yg5kqjefnw4wq4ulcad.onion/attachment.php?aid=4130
8.计算机中lqrazqq016j41.jpg文件的删除时间为?(UTC+0800)(答案格式:1990-01-01 01:01:01) (1.0分)

2024-11-09 21:59:48
9.Fikret Ceker曾经向机主发送过一张照片,请找到该图片写出其拍摄的GPS坐标;(答案格式:保留小数点后4位,如33.3333N,33.3333E) (3.0分)


GPSLatitudeRef: N
GPSLatitude: 40.01121666666667
GPSLongitudeRef: E
GPSLongitude: 112.70008055555556
40.0112N,112.7000E
10.计算机中用户“李四”在最后一次成功登录之前登录失败了多少次? (答案格式:纯数字) (3.0分)

6
二、手机取证 (共8题19.0分)
请根据手机检材,回答以下问题(备份密码6666):
1.分析手机检材,写出苹果手机的序列号是多少?(答案格式:大小写与实际需一致) (1.0分)

FK3XDN2UKPJ5
2.分析手机检材,写出嫌疑人facebook账号的密码是多少?(答案格式:大小写与实际需一致) (1.0分)

1234qwer
3.分析手机检材,下列哪些地址是嫌疑人曾经去过的? (2.0分)
A: 南宁市青秀区 B: 南宁市江南区 C: 济南市历城区 D: 上海市松江区 E: 上海市宝山区
只有这个没有Photos.sqlite

ABCE
4.分析手机检材,嫌疑人安装了用于记账的APP,请问该APP的包名是什么?(答案格式:com.abc.abc) (1.0分)

com.maicai.freejizhang
5.分析手机检材,嫌疑人记账APP中记录的使用支付宝支付的用于礼金红包的金额一共是多少?(答案格式:请写整数金额,如1230元) (5.0分)
支付宝支付:

7EB78B8F64E24EB6956DC9DB44720794

uuid

用户uuid排除最后一个
17000000
应该去掉两个零,后面是角和分
170000元
6.分析手机检材,嫌疑人家里路由器密码是多少?(答案格式:大小写与实际需一致) (3.0分)


201808188
7.分析手机检材,写出嫌疑人最新家庭地址;(答案格式:XX市XX区XX路XX弄 (1.0分)

上海市浦东新区张杨北路2899弄
8.分析手机检材,嫌疑人团伙走私的“大麻”的单价是每克多少元?(答案格式:XX元/克) (5.0分)

mm20241105
foremost -T 19.pic
常见的文件后缀包括.doc、.xls、.ppt等
foremost之后的结果在这里
这里,重新回到原始的19.pic文件,手动把文件重新提出来
344
三、服务器取证 (共6题19.0分)
1. 重建完整的系统后,redis对外暴露的端口号是多少?(答案格式:数字) (3.0分)

16379
2. 请找出加密mysql数据库连接密码所用的加密密钥(盐值)?(答案格式:注意大小写) (3.0分)
服务器后端是java的站,数据库为mysql和redis

docker inspect 79d2dfa52a5e

指定了 Spring Boot 应用的配置文件路径
/home/date/s048/application-s048.yml
思路2:

本身没加密,应该不对

外部的yml有

ENC(...) 是一种 加密密码的占位标记,常见于使用 Jasypt(Java Simplified Encryption) 等加密库时
意思是:这个密码是加密过的,程序运行时会使用指定的密钥对其进行解密
回文件里找秘钥,找jasypt

有点多,但是筛选也很简单,如果类名有的大概率是jasypt包中自带的,我们只需要看类名路径中不包含jasypt但是代码中调用过的


解密脚本:
直接调用jar包进行解密操作,从jar包里面提取jasypt-1.9.3.jar:

把这个jar包用在本地编译的流程:
写解密脚本:
package org.example;import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;public class JasyptDemo {public static void main(String[] args) {// 创建加密器StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();// 设置算法和密码(必须与配置中的一致)encryptor.setAlgorithm("PBEWithMD5AndDES");encryptor.setPassword("F*DZ-kZMs5qt"); // 这是你用于加密/解密的密钥// 要解密的内容String encryptedInput = "ij+NuXpx6CZwYB1oGHA2M2E2na0G8Tux"; // 去掉 ENC(...) 的密文String decryptedText = encryptor.decrypt(encryptedInput);System.out.println("解密后: " + decryptedText);}
}
mA0:xA0^
或者
package org.example;
import org.jasypt.encryption.StringEncryptor;
import org.jasypt.encryption.pbe.StandardPBEByteEncryptor;
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;public class Main {public static StringEncryptor stringEncryptor() {StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();encryptor.setAlgorithm(StandardPBEByteEncryptor.DEFAULT_ALGORITHM);encryptor.setPassword("F*DZ-kZMs5qt");return encryptor;}public static void main(String[] args) {StringEncryptor encryptor = stringEncryptor();String a = "ij+NuXpx6CZwYB1oGHA2M2E2na0G8Tux";System.out.println(a+"--->"+encryptor.decrypt(a));String b = "064l9Wwf9KjXlSz0phcwvg+R5xwzCNl7";System.out.println(b+"--->"+encryptor.decrypt(b));String c = "8fiHevvtSApJ/7UoFXZcMMhzXWIdvyjv";System.out.println(c+"--->"+encryptor.decrypt(c));}
}
基本都是复制,在Main加上StringEncryptor stringEncryptor(),然后在主函数进行解密
3. 请分析得出相亲网站的后台数据库中哪张表存放了会员相关信息,写出表名? (6.0分)
一共两个mysql

都是ssh连接
端口ip根据原来文件里来就行,反正都是docker里面的
里面没有
试试另一个

a_member_st
4. 已知用户在系统中的所有操作都会被记录,请找出用户在“查询角色”时,其请求的后端路径地址为?(格式:/api/query/...) (3.0分)

思路2:



/zwz/role/getAllByPage
5. 请分析得出数据库用户表中status为-1状态值的含义为?(格式:学生) (1.0分)


禁用
6.请统计平均月均收入第二高的省份(省份包含三大类:省、直辖市、自治区)(答案格式:请写出完整的省份名(或直辖市名、自治区名),如江西省、天津市、西藏自治区) (3.0分)
SELECTSUBSTRING( address,1,2) AS `省份`,SUM( income ) AS `收入`,COUNT( income ) AS `人数`,SUM( income )/ COUNT( income ) AS `平均收入`
FROMa_member_st
GROUP BY
`省份`
ORDER BY
`平均收入` DESC

内蒙古自治区
四、程序功能分析 (共6题14.0分)
请根据APK检材,回答以下问题:
1.分析APK检材,请问程序申请了几项系统权限?(答案格式:6) (2.0分)

4
2.分析APK检材,请写出程序的入口邀请码;(答案格式:与实际大小写保持一致) (6.0分)


Java Native Interface(JNI) 是 Java 提供的一种机制,用于 在 Java 代码中调用由 C/C++ 编写的本地代码,或者让 C/C++ 代码调用 Java 的类和方法。
程序调用isString函数验证邀请码是否正确。isString是 native 函数,静态代码块中加载了libgallery.so库:
private final native boolean isString(String str);public static void t(MainActivity mainActivity) {r1.c.e(mainActivity, "this$0");c cVar = mainActivity.f2407c0;if (cVar == null) {r1.c.h("binding");throw null;}if (!mainActivity.isString(((EditText) cVar.f22G).getText().toString())) {Toast.makeText(mainActivity, "邀请码不正确", 0).show();} else {mainActivity.startActivity(new Intent(mainActivity, (Class<?>) GalleryActivity.class));mainActivity.finish();}}
去isString里面找
静态代码块中加载了libgallery.so库

找到函数名isString

bool __cdecl Java_com_example_gallery_MainActivity_isString(int a1, int a2, int a3)
{int v3; // esiconst char *v4; // edisize_t v5; // eaxsize_t v6; // ecxchar *v7; // ediconst char *v8; // edxint v9; // esisize_t v10; // edichar *v11; // eax_BYTE *v12; // edx_BYTE *v13; // esi_BYTE *v14; // esiint *v15; // esi_BYTE *v16; // esi_BYTE *v17; // edxbool result; // albool v19; // sisize_t v20; // [esp+10h] [ebp-28h]const char *src; // [esp+14h] [ebp-24h]int dest; // [esp+1Ch] [ebp-1Ch] BYREFsize_t v23; // [esp+20h] [ebp-18h] BYREFvoid *ptr; // [esp+24h] [ebp-14h]unsigned int v25; // [esp+28h] [ebp-10h]v3 = a1;v25 = __readgsdword(0x14u);v4 = (const char *)(*(int (__cdecl **)(int, int, _DWORD))(*(_DWORD *)a1 + 676))(a1, a3, 0);v5 = strlen(v4);if ( v5 >= 0xFFFFFFF8 )sub_12FF0(&dest);v6 = v5;src = v4;if ( v5 >= 0xB ){v9 = v5 | 7;v10 = v5;v11 = (char *)operator new((v5 | 7) + 1);v6 = v10;v7 = v11;ptr = v11;dest = v9 + 2;v3 = a1;v23 = v6;v8 = src;goto LABEL_6;}LOBYTE(dest) = 2 * v5;v7 = (char *)&dest + 1;v8 = src;if ( v5 ){
LABEL_6:v20 = v6;memmove(v7, v8, v6);v8 = src;v6 = v20;}v7[v6] = 0;(*(void (__cdecl **)(int, int, const char *))(*(_DWORD *)v3 + 680))(v3, a3, v8);if ( (dest & 1) != 0 ){if ( v23 != 6 )goto LABEL_30;}else if ( (unsigned __int8)dest >> 1 != 6 ){goto LABEL_30;}v12 = (char *)&dest + 1;if ( (dest & 1) != 0 )v12 = ptr;if ( *v12 != 65 )goto LABEL_30;v13 = (char *)&dest + 3;if ( (dest & 1) != 0 )v13 = (char *)ptr + 2;if ( *v13 != 66 )goto LABEL_30;v14 = (char *)&dest + 2;if ( (dest & 1) != 0 )v14 = (char *)ptr + 1;if ( *v14 != 67 )goto LABEL_30;v15 = (int *)((char *)ptr + 3);if ( (dest & 1) == 0 )v15 = (int *)&v23;if ( *(_BYTE *)v15 != 68 )goto LABEL_30;v16 = (char *)&v23 + 1;if ( (dest & 1) != 0 )v16 = (char *)ptr + 4;if ( *v16 != 69 ){
LABEL_30:result = 0;if ( (dest & 1) == 0 )return result;goto LABEL_31;}v17 = (char *)&v23 + 2;if ( (dest & 1) != 0 )v17 = (char *)ptr + 5;result = *v17 == 70;if ( (dest & 1) != 0 ){
LABEL_31:v19 = result;operator delete(ptr);return v19;}return result;
}

验证答案:由于 APK 打不开,我只能用 frida 去主动调用isString,如果返回true,说明正确
Java.perform(function () {let a = Java.use("A0.a");a["a"].implementation = function () {// 在闪退之前主动调用let m = Java.use("com.example.gallery.MainActivity").$new();console.log("isString: " + m.isString("ACBDEF"));return true;};
})
3.分析APK检材,该程序进行恶意行为时保存的文件使用的加密算法及加密模式是?(答案格式:大写,如XXX-XXX) (1.0分)
Cipher.getInstance
Cipher.getInstance(...) 是 Java 加密框架中用于 创建加密或解密引擎 的方法,是 javax.crypto.Cipher 类的一个静态工厂方法。它是 Java 中实现对称加密、非对称加密、摘要算法等核心的工具之一。
AES-GCM
4.分析APK检材,该程序进行恶意行为时保存的文件使用的加密密钥是?(答案格式:与实际大小写保持一致) (3.0分)

你要知道密钥是多少,就必须要拿到 stringFromJNI() 的返回值。
主动调用吧
原来复制的:
把.stringFromJNI()提取
let GalleryActivity = Java.use("com.example.gallery.GalleryActivity");
GalleryActivity["stringFromJNI"].implementation = function () {console.log(`GalleryActivity.stringFromJNI is called`);let result = this["stringFromJNI"]();console.log(`GalleryActivity.stringFromJNI result=${result}`);return result;
};
模板:
Java.perform(function () {let a = Java.use("A0.a");a["a"].implementation = function () {// 在闪退之前主动调用let obj = Java.use("com.example.gallery.GalleryActivity").$new();console.log("stringFromJNI: " + obj.stringFromJNI());return true;};
})Java.perform(function () {let a = Java.use("第一个包,第一个类");a["第一个类"].implementation = function () {// 在闪退之前主动调用let obj = Java.use("真正函数所在位置").$new();console.log("stringFromJNI: " + obj.函数调用的方法());return true;};
})
最终:
Java.perform(function () {let a = Java.use("A0.a");a["a"].implementation = function () {// 在闪退之前主动调用let obj = Java.use("com.example.gallery.GalleryActivity").$new();console.log("stringFromJNI: " + obj.stringFromJNI());return true;};
})
stringFromJNI: 0123456789abcdef0123456789abcdef
stringFromJNI: 0123456789abcdef0123456789abcdef
stringFromJNI: 0123456789abcdef0123456789abcdef
stringFromJNI: 0123456789abcdef0123456789abcdef
思路2:
stringFromJNI在也是native,该方法由本地(Native)代码实现,而不是用 Java 实现


0123456789abcdef0123456789abcdef
5.分析APK检材,该程序上传文件的服务器通信URL是多少?(答案格式: https://xxxx/xx/xx ) (1.0分)
源码里有
https://biwuzhuanyongurl.com/upload
6.分析APK检材,以下哪个是该程序存在的恶意行为? (1.0分)
A. 偷偷调用前置摄像头拍照并上传图片至服务器
B. 偷偷调用后置摄像头拍照并上传图片至服务器
C. 后台偷偷录音并上传音频至服务器
D. 偷偷获取通讯录信息并上传服务器
E. 偷偷获取短信信息并上传服务器

A
五、网络流量分析 (共6题19.0分)
请根据网络流量包检材,回答以下问题:
1.分析网络流量包,请问目录遍历攻击开始时间是什么时候?(答案格式:1990-01-01 01:01:01) (1.0分)

2024/10/24 17:26:12
2.分析网络流量包,可以发现哪种攻击行为? (1.0分)
A. 网络钓鱼
B. SQL注入
C. 拒绝服务攻击
D. 恶意软件传播
E. 中间人攻击

B
3.分析网络流量包,黑客获取到的数据库名称是?(答案格式:小写) (3.0分)

secret
4.分析网络流量包,黑客通过时间盲注获取到的数据是什么?(答案格式:与实际大小写保持一致) (6.0分)

Th!s_1s_5ecret!
5.分析网络流量包,黑客使用什么webshell管理工具控制服务器?(答案格式:请写中文名,无需填写版本号) (3.0分)
冰蝎
6. 分析网络流量包,黑客通过后门执行的最后一条命令是什么?(答案格式:与实际大小写保持一致) (5.0分)


type login.php
六、数据分析 (共4题10.0分)
请根据数据分析检材,回答以下问题:
1. 分析数据库检材,该数据库中会员姓名包含“强”字的会员数量为多少?(答案格式:纯数字) (1.0分)
SELECT * FROM member WHERE userName LIKE '%强%'
2. 属于会员id“89378”的直接下级用户数为多少?(答案格式:纯数字) (1.0分)
SELECT COUNT(*) FROM member WHERE parentId = 89378
3. 请计算每名会员的总返佣金额,写出总返佣金额最大的会员id;(答案格式:纯数字) (3.0分)
SELECT userId,SUM(newBlance-oldBlance) as `佣金` FROM salary GROUP BY userId ORDER BY `佣金` DESC
4.计算在2024年5月1日到2024年5月30日之间(包含5月1日和5月30日),总提现金额大于1000的用户数量;(答案格式:纯数字) (5.0分)
SELECTuserId,SUM(withdrawAmount)
FROMwithdraw
WHEREFROM_UNIXTIME( creationTime /1000,'%Y-%m-%d')>='2023-05-01'
AND FROM_UNIXTIME( creationTime /1000,'%Y-%m-%d')<='2024-05-30'
GROUPBYuserId
HAVING
SUM( withdrawAmount )> 1000
