0%

25盘古石初赛|复现

前言:

初赛也是拿到了69名一等奖成功晋级决赛,备赛2025盘古石决赛。

容器密码:01tn0GdE0]BF00pT0T&f00&u0k-q0Up41UhA00N,0-L0kRr0j-p0T&R1F&=0\Ni1GR]

检材:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|贾伟码
|----安卓手机
|----image.zip
|----服务器
|----server1.001
|----server2.001
|----计算机
|----pc-disk.E01
|----监控
|----content.mp4
|----video.E01
|----智能冰箱
|----SmartFridge.bin
|钟无声
|----mac电脑
|----mac.E01
|----苹果手机
|----image.zip

手机取证

1.分析安卓手机检材,手机的IMSI是?[答案格式:660336842291717] Analyze the Android phone: What is the IMSI? [Answer format: 660336842291717]

460036641292715

2.养鱼诈骗投资1000,五天后收益是?[答案格式:123] Invest 1000 in “Fish farming” scam, what is return after 5 days? [Answer format: 123]

175

3.分析苹果手机检材,手机的IDFA是?[答案格式:E377D1D7-BA02-4A79-BB9A-5C2DE5BD1F17] Analyze the iPhone: What is the IDFA? [Answer format: E377D1D7-BA02-4A79-BB9A-5C2DE5BD1F17]

E477D4C7-BD02-4979-BC9D-5C5DE7BD1F17

4.Telegram应用的卸载时间是?[答案格式:2023-01-22-17:37:50] When was uninstall time of Telegram App? [Answer format: 2023-01-22-17:37:50]

2025-04-17 10:51:39

5.机主hotmail邮箱地址是?[答案格式:123345@hotmail.com] What is the user’s Hotmail email address? [Answer format: 123345@hotmail.com]

hostsixer@hotmail.com

先全局搜索,但是发现有两个邮箱xtest901234@hotmail.comhostsixer@hotmail.com

跟进查看可以确定邮箱应该为hostsixer@hotmail.com

6.苹果电脑开机密码是?[答案格式:12345] What is the mac’s power-on password? [Answer format: 12345]

12345678

7.Telegram加密通讯中,加密聊天信息用到的第二个解密载体是?[答案格式:123.zip] The second decryption vector used to encrypt chat messages in Telegram encrypted messaging is? [Answer format: 123.zip]

2.mp4

上面找邮箱地址的时候发现下面用的是加密聊天

后面再mac电脑备忘里可以找到蜜语规则(手机取证也是用上电脑检材了,还是打少了。。。)

跟进查看,发现有三个文件

2.mp4第46秒闪过了一个加密算法,可以确定应该就是这个

8.贾韦码的内部代号是?[答案格式:77] What is Jia Wei Ma(贾韦码)’s internal code name? [Answer format: 77]

48

9.特快专递的收货地址是?[标准格式:老牛市快速路11号ADE公司] What is the delivery address for the express package? [Answer format: 老牛市快速路11号ADE公司]

西红市中山路35号PGS健身房

还是上面那个文件,聊天记录中能够找到

Apk取证(未复现)

1.分析安卓检材,远控工具包名是?[标准格式:com.app.cpp] Analyze the Android device: What is the package name of the remote control tool? [Answer format: com.app.cpp]

2.远控工具中继服务器IP是?[标准格式:192.168.11.11] What is the IP of the relay server in the remote control tool? [Answer format: 192.168.11.11]

3.远控工具ID服务器端口是?[标准格式:8088] What is the “ID server”‘s open port in the remote control tool? [Answer format: 8088]

4.远控工具中继服务器Key是?[标准格式:HoTwGxUuV9OxSSEWRFsr1DVxQBkbbFRe0ImYMTlzyec=] What is the relay server key in the remote control tool? [Answer format: HoTwGxUuV9OxSSEWRFsr1DVxQBkbbFRe0ImYMTlzyec=]

5.远控工具中收藏的远程ID是?[标准格式:123456] What is the saved remote ID in the remote control tool? [Answer format: 123456]

6.远程控制该手机的手机型号是?[标准格式:huawei-Hot] What is the model of the phone controlling this phone? [Answer format: huawei-Hot]

7.监听工具包名是?[标准格式:com.app.cpp] What is the package name of the eavesdropping tool? [Answer format: com.app.cpp]

8.监听工具代码主入口是?[标准格式:com.app.cpp.MainActidddy] What is the main entry point in the eavesdropping tool’s code? [Answer format: com.app.cpp.MainActidddy]

9.监听工具的签名算法是?[标准格式:AES123RSA ] What signing algorithm does the eavesdropping tool use? [Answer format: AES123RSA]

10.监听工具运行多少秒后会跳转成黑色幕布?[标准格式:3.000] How many seconds after running does the eavesdropping tool display a black screen? [Answer format: 3.000]

11.监听工具运行后,黑色幕布上字符串是?[标准格式:aes取证平台] What string appears on the black screen? [Answer format: aes取证平台]

12.监听工具检测到多少分贝开始录音?[标准格式:30] At what decibel level does the eavesdropping tool start recording? [Answer format: 30]

13.监听工具录音连续几秒没有检测到声音停止录音?[标准格式:3] How many consecutive seconds of silence trigger the eavesdropping tool to stop recording? [Answer format: 3]

14.监听工具保存文件存储路径的数据库名称是?[标准格式:sqlite.db] What is the database name storing file paths in the eavesdropping tool? [Answer format: sqlite.db]

15.监听工具保存录像文件的文件夹是?[标准格式:file] What folder stores the eavesdropping tool’s video files? [Answer format: file]

16.监听工具数据库中保存音视频文件的路径使用什么加密?[标准格式:Rsa] What encryption algorithm is used for the paths of audio and video files saved in the eavesdropping tool’s database? [Answer format: Rsa]

17.录音的文件采用什么加密方式?[标准格式:RC4-123] What encryption method is used for audio files? [Answer format: RC4-123]

18.录像文件加密秘钥的最后一位是?[标准格式:0x6A] What is the last byte of the encryption key for video files? [Answer format: 0x6A]

19.原始文件md5为3b4d55ae的创建时间是?[标准格式:2024-2-14-16:32:8] When was the original file with MD5 “3b4d55ae” created? [Answer format: 2024-2-14-16:32:8]

计算机取证

1.分析贾韦码计算机检材,计算机系统Build版本为?【标准格式:19000】 Analyze Jia Wei Ma(贾韦码)’s computer sample: What is the system Build number? [Answer format: 19000]

18362.356

2.计算机最后一次正常关机的时间为?UTC +0【标准格式:2025-05-06 09:00:00】 When was the computer last shut down normally (UTC +0)? [Answer format: 2025-05-06 09:00:00]

2025-04-18 03:20:54

换算成UTC+0就为2025-04-18 03:20:54

3.计算机网卡的MAC地址为?【标准格式:00-0B-00-A0-00-00】 What is the MAC address of the computer’s network interface card? [Answer format: 00-0B-00-A0-00-00]

00-0C-29-0F-69-00

4.计算机用户“贾韦码” 安全标识符SID为?【标准格式:S-X-X-X-X-X-X-X】 What is the SID of user “贾韦码”? [Answer format: S-X-X-X-X-X-X-X]

S-1-5-21-3733482367-3411043098-2536183883-1001

5.计算机默认浏览器为?【标准格式:Mozilla Firefox】 What is the default browser on the computer? [Answer example: Mozilla Firefox]

Google Chrome

或者火眼直接看

6.计算机默认浏览器版本为?【标准格式:000.0.0000.00】 What is the version of the default browser? [Answer format: 000.0.0000.00]

135.0.7049.96

7.机主通过浏览器搜索国外社交软件为?【标准格式:Whatsapp】 What international social app did the owner search for? [Answer example: Whatsapp]

Telegram

桌面上有个Telegram

猜测应该就是纸飞机,直接爆搜

8.机主的邮箱账号为?【标准格式:pgscup@pgs.com】 What is the owner‘s email account? [Answer format: pgscup@pgs.com]

tqmdavidjohnson300@gmail.com

9.计算机装过一款反取证软件为?【标准格式:EnCrypt.exe】 What anti-forensic software was installed on the computer? [Answer example: EnCrypt.exe]

VeraCrypt.exe

10.计算机通过Xshell远程连接的ip地址为?【标准格式:127.0.0.1】 What IP address did the computer connect to via Xshell? [Answer format: 127.0.0.1]

192.168.56.129

11.机主曾买过一个美国的TG账号,请给该账号的原两步验证密码?【标准格式:8位数字】 The owner purchased an US Telegram account. Provide its original two-step verification password. [Answer format: 8 digits]

13770603

12.给出其电脑内加密容器的解密密码?【标准格式:Abc@123】 What is the decryption password for the encrypted container on the computer. [Answer format: Abc@123]

Pgs8521d3j

在VR案情里有一个密室可以找到这个,可以看到容器加密规则

在最近使用的文件处可以看到一个疑似是容器的文件dsf2wecasdcqwed12434,将其导出

根据加密规则放入passwarekit爆破

添加掩码攻击并且移动到top,开始爆破得到密码Pgs8521d3j

13.给出其电脑内加密容器挂载的盘符?【标准格式:C】 What drive letter is assigned to the mounted encrypted container? [Answer format: C]

F

先将容器挂载起来查看

发现F盘有相同的目录output,所以应该是F盘

14.给出其电脑内存放了多少张伪造身份证?【标准格式:10】 How many forged ID cards are stored on the computer? [Answer format: 10]

1023

进入容器查看,去掉第一行应该有1023张

15.找出任敏的身份证编号?【标准格式:18位】 Find the ID number of “Ren Min(任敏)”. [Answer format: 18 digits]

430529195112085460

16.找出其电脑内存放的密钥文件,计算其MD5?【标准格式:字母小写】 Find the MD5 hash of the key file stored on the computer. [Answer format: lowercase letters]

1022cc083a4a5a9e2036065e2822c48e

把镜像导入x-ways分析,直接全局搜索keyfile看看,发现在分区间隔存在(这个名字猜测有点脑洞了)

解码

导出这个rar文件,计算keyfile.keyfile的md5值

17.找出其电脑内存放的密钥文件,解密此密钥文件,给出其内容?【标准格式:第3届pgscup】 Decrypt the key file stored on the computer and give the content. [Answer format: 第3届pgscup]

zfs加密pool密钥文件

上面已经解密过了

18.对macOS系统进行解析,登陆的电子邮件服务是谁提供的?【标准格式:pgscup】 Analyze the macOS system. Who provides the email service you log in to? [Standard format: pgscup]

hotmail

根据提供的格式猜测应该是hotmail

19.系统备忘录的包名是什么?【标准格式:com.dfefef.note】 What is the package name of the system’s Notes app? [Answer format: com.dfefef.note]

com.apple.Notes

20.图片中隐藏的内容是什么?【标准格式:隐藏内容 厨子戏子痞子】 What is the hidden content in the image? [Answer format: 隐藏内容 厨子戏子痞子]

位移加密 正向位移操作

上面跟2.mp4同目录下还有一个3.png,猜测应该是这个图片将其导出

放入StegSolve中发现存在图片隐写,能够找到一张二维码

用在线平台解码https://cli.im/deqr/other

21.被加密文件的扩展名是什么?【标准格式:123】 What is the file extension of the encrypted files? [Answer format: 123]

enc

在桌面信息可以找到一个文件加密器.app,可以猜测被加密的文件是贾韦码资料.rar

 2025-05-26 233842.png

跟进到文件加密器.app,找到一个python38.zip翻看里面文件大多都是反编译模块以及有一些看着像是主要功能模块,将其导出

解压后找到一个encrypt_deobfuscated.pyc疑似是实现加密功能的模块,用在线网站PyLingual将其反编译(这个文件下面做苹果应用取证的时候也会用到)

找到实现文件加密的方法,可以看到扩展名为enc

22.被加密的文件总共有几个?【标准格式:5】 How many encrypted files are there? [Answer format: 5]

1

应该只有贾韦码资料.rar.enc

23.贾韦码家使用的智能门锁品牌型号是什么?【标准格式:小米X号】 What is the brand and model of the smart lock used in Jia Wei Ma(贾韦码)’s home? [Answer example: 小米X号]

金刚I号

上面做手机取证的时候发现的

EXE取证(未复现)

1.分析Windows木马,其控制端ip是?[标准格式:192.168.1.11] Analyze the Windows trojan virus: What is its controller IP? [Answer format: 192.168.1.11]

2.软件会复制自身到哪个文件夹下?[标准格式:DaTa] Which folder does the malware copy itself to? [Answer format: DaTa]

3.接上题,复制后软件名称是?[标准格式:AppTmp.exe] Continuing last question, What is the copied filename? [Answer format: AppTmp.exe]

4.软件一共可以窃取多少种浏览器的信息?[标准格式:3] How many types of browsers can the malware extract data from? [Answer format: 3]

5.软件查询安装的杀毒软件出错或异常会返回什么字符串?[标准格式:Apps] What error message is returned when the malware fails to detect antivirus software? [Answer format: Apps]

苹果应用取证

1.对mac电脑中的加密程序进行分析,使用了一个特定的数作为密钥生成的种子,请问这个数是什么?【标准格式:1234】 Analyze the macOS encryption app: What encryption seed is used for key generation? [Answer format: 1234]

42

上面做计算机取证的时候就已经将encrypt_deobfuscated.pyc反编译了

找生成密钥的方法

分析一下代码,先是对 temp_key 前 10 字节进行异或 42 的简单混淆,生成 mixed_base,但是这个mixed_base似乎并没有被用到密钥的生成而是简单的做了个混淆,下面直接赋值静态字符串actual_key = 'SecureKey123456'并且利用enhance_key()方法生成密钥。所以这题其实我是有点懵逼的,但是题目的格式是数字并且异或42是一个固定的值,所以我猜测应该就是42了。

2.分析文件头部元素并确定它们的正确顺序。将字段名称按顺序连接并提交?【标准格式:字段1_字段2_字段3...】 Analyze file headers and determine the correct field order. Submit concatenated field names. [Answer format: Field1_Field2_Field3…]

iv_encrypted_data

直接找到文件加密的方法(上面做计算机取证就找到这个方法了),可以看到框起来的部分将IV和加密后的数据写入文件

3.分析密钥派生过程中使用了几个算法步骤。其中一个函数名与其实际功能不符的名称。找出这个函数名并提交? [答案格式:函数名]

_descramble_key

上面找到的这个函数,根据我们上面的分析实际功能并不是解码或还原密钥,而是使用了一个硬编码的密钥,所以应该是这个函数

#4.程序中实现了一个故意减慢加密过程的机制,延迟值是多少? [答案格式:1.1]

5.程序中隐藏了一个版本标识符,请找出版本号?【标准格式:v1.1.1】 Find the hidden version identifier in the program. [Answer format: v1.1.1]

v0.28.8

文件夹里有一个info.plist的备份文件,打开查看可以找到版本号

物联网取证

1、分析冰箱,请问智能冰箱的品牌?【标准格式:xiaomi】 Analyze the smart refrigerator: What is its brand? [Answer format: xiaomi]

Panasonic

2、请问智能冰箱的型号?【标准格式:MiFridge2024】 What is the model of the smart refrigerator? [Answer format: MiFridge2024]

NR-E46CV1

#3、请找智能冰箱的uuid?【标准格式:34567890-12cd-efab-3456-789012cdefab】 Find the UUID of the smart refrigerator. [Answer format: 34567890-12cd-efab-3456-789012cdefab]

12345678-90ab-cdef-1234-567890abcdef

根据标准格式猜测是这个

#4、请问智能冰箱默认保存几张图片?【标准格式:1】 How many images are saved by default in the smart refrigerator? [Answer format: 1]

5

用foremost可以导出4张图片(这里用binwalk提取失败了)

但是做到下面的时候我发现有五个face。所以应该是有5张图片,有两张是没有数据的

5、请问冰箱中已存的第一张图片上的内容是什么?【标准格式:满城尽带黄金甲】 What is the content of the first saved image? [Answer format: 满城尽带黄金甲]

盘古石杯贾韦码

选定选块起始位置(如果不清楚可以拖个jpg到010看看头部),尾部在26扇区,这就是完整face1.jpg的十六进制内容,将选块视为文件

返回根目录查看,可以看到已经恢复成功了

6、请问冰箱中已存的第二张图片的名称是什么?【标准格式:123.jpg】 What is the filename of the second saved image? [Answer format: 123.jpg]

face2.jpg

本来以为直接就是00000200.jpg,观察可以发现图片是Exif图片,看别人wp说Exif图片本身的exif信息中不会存储图片名称,所以应该不是这个

在x-ways中可以发现有一个face1

\

尝试搜索一下face发现搜出来五个face

7、请找冰箱中隐藏的内容?【标准格式:chuzixizipizi】 Find the hidden content in the refrigerator. [Answer format: chuzixizipizi]

pangushicup

利用strings命令查看

1
strings SmartFridge.bin

8、请找出冰箱中嫌疑人图片MD5值的后六位?【标准格式:1a2b3d】 What are the last six chars of the MD5 hash for the suspect’s image in the refrigerator? [Answer format: 1a2b3d]

882564

根据案情分析,可以知道是钟无声杀了贾韦码

所以上面用foremost导出来的图片中00000400.jpg(也就是face3.jpg,也可以用上面face1.jpg恢复方法恢复导出就是比较麻烦些)是嫌疑人图片

#9、请找出冰箱最后一次开门时间?【标准格式:10:11】 When was the refrigerator last opened? [Answer format: 10:11]

07:38/15:48

看了别人的wp说是需要解压贾韦码资料.rar.enc

解密exp:

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
import os
from Crypto.Cipher import AES
import hashlib


class DecryptionTool:
def __init__(self):
self._generate_key()

def _generate_key(self):
# 复现加密时的密钥生成过程
actual_key = 'SecureKey123456'
self.enhanced_key = self.enhance_key(actual_key)

def enhance_key(self, key):
# 完全复现加密时的密钥增强过程
round1 = self._add_salt(key)
round2 = self._ascii_transform(round1)
round3 = self._xor_transform(round2)
round4 = round3[::-1]
final_key = hashlib.md5(round4.encode()).digest()
return final_key

def _add_salt(self, key):
salt_components = ['salt', '_', 'value']
return key + ''.join(salt_components)

def _ascii_transform(self, text):
result = ''
for i in range(len(text)):
ascii_val = ord(text[i])
if i % 3 == 0:
result += chr((ascii_val + 7) % 256)
elif i % 3 == 1:
result += chr((ascii_val ^ 15) % 256)
else:
result += chr(ascii_val * 5 % 256)
return result

def _xor_transform(self, text):
xor_keys = ['XorKey123456789', 'AnotherKey987654']
result = text
for xor_key in xor_keys:
temp = ''
for i in range(len(result)):
temp += chr(ord(result[i]) ^ ord(xor_key[i % len(xor_key)]))
result = temp
return result

def unpad_data(self, data):
padding_length = data[-1]
return data[:-padding_length]

def decrypt_file(self, input_file, output_file=None):
if not output_file:
if input_file.endswith('.enc'):
output_file = input_file[:-4]
else:
output_file = input_file + '.dec'

try:
with open(input_file, 'rb') as f:
file_data = f.read()

# 提取IV(前16字节)
iv = file_data[:AES.block_size]
encrypted_data = file_data[AES.block_size:]

cipher = AES.new(self.enhanced_key, AES.MODE_CBC, iv)
decrypted_data = self.unpad_data(cipher.decrypt(encrypted_data))

with open(output_file, 'wb') as f:
f.write(decrypted_data)

return (True, output_file)
except Exception as e:
return (False, str(e))


# 使用示例
if __name__ == '__main__':
def main():
import argparse
parser = argparse.ArgumentParser(description='File Decryption Tool')
parser.add_argument('-i', '--input', required=True, help='Encrypted input file')
parser.add_argument('-o', '--output', help='Output file path')

args = parser.parse_args()

decryptor = DecryptionTool()
success, result = decryptor.decrypt_file(args.input, args.output)

if success:
print(f'Decryption successful! Output file: {result}')
else:
print(f'Decryption failed: {result}')


main()

运行

1
python 1.py --input 贾韦码资料.rar.enc

解压后得到一个face1.jpg和一个word文档

查看资料里面可以找到最后一次应该是第六天的7点38分(其实并不确定有点怪。。。)

-

看了别人的wp说是要看face1.jpg的修改时间(我也不知道为啥)

10、默认图片的存储限制大小是多少?【标准格式:1KB】 What is the default size limit for saved images? [Answer format: 1KB]

100KB

每张图片之间差了102424给字节约100KB

#11、分析video.E01,被修改的录像md5前5位是?【标准格式:1a2b3】 Analyze video.ex01: What are the first five chars of the MD5 hash for the modified video? [Answer format: 1a2b3]

fa3b6或ea7be

这题也是搞的我很懵逼,一个视频有快进一个视频有回退

发现监控里1:20到1:30被加速了将视频导出看md5

但是我看了别人的wp发现好像不是这个,在13到14秒的时候视频发生了回退

导出看md5值

数据分析

提示:这里的sql版本最好选择8.0以上否则第四题以后的语句可能跑不出来

1、对贾韦码计算机检材进行解析,该诈骗集团的最高层领导者的id 和姓名?【标准格式:M000001 姓名】 Analyze Jia Wei Ma(贾韦码)’s computer: Provide the ID and name of the scam group’s top leader. [Answer format: M000001 Name]

M020038 杨俊

找到需要分析的三张表

将三张表导出

hierarchy.csv这张表可以看到有一个level0是没有上线id的,所以说明level0的层级应该是最高的

找到level0的姓名

2、找出最高领导的所有下线中提现总额最高的成员ID?【标准格式:M0000001】 Find the ID of the member with the highest withdrawal amount among all subordinates of the top leader.. [Answer format: M0000001]

M019024

将三张表导入到数据库中

这里的下线就是付款人(payer)给上线收款人(payer),withdrawal是提现

1
2
3
4
5
6
select payer_id, sum(amount) total
from transactions
where `type` = 'withdrawal'
group by payer_id
order by total desc
limit 1;

3、找出从直接下线获得平均佣金最高的成员ID及其平均佣金金额?【标准格式:M0000001,123.12】 Find the member ID and their average commission amount from direct referrals, where the average is the highest. [Answer format: M0000001,123.12]

M029030,999.43

这里是查询从下线获得平均佣金的成员ID,所以这里查询的应该是收款人ID(payee_id)

1
2
3
4
5
6
select payee_id, avg(amount) avger
from transactions
where `type` = 'commission'
group by payer_id
order by avger desc
limit 1;

#4、找出注册时间最早的前 10% 成员中,交易次数最少的 5 位成员的 id?【标准格式:M000001,M000002,M000003,M000004,M000005】 List IDs of the 5 least active members among the earliest 10% registered user. [Answer format: M000001,M000002,M000003,M000004,M000005]

M003135,M004208,M016076,M018368,M001964

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
SELECT 
GROUP_CONCAT(member_id ORDER BY txn_count, member_id SEPARATOR ',') AS result
FROM (
SELECT
m.member_id,
(COALESCE(p.payer_cnt, 0) + COALESCE(e.payee_cnt, 0)) AS txn_count
FROM (
SELECT
member_id,
registration_date,
@row_num := @row_num + 1 AS row_num,
CEIL(@total * 0.1) AS cutoff
FROM members
CROSS JOIN (SELECT @row_num := 0, @total := (SELECT COUNT(*) FROM members)) AS vars
ORDER BY registration_date
) m
LEFT JOIN (
SELECT payer_id, COUNT(*) AS payer_cnt
FROM transactions
GROUP BY payer_id
) p ON m.member_id = p.payer_id
LEFT JOIN (
SELECT payee_id, COUNT(*) AS payee_cnt
FROM transactions
GROUP BY payee_id
) e ON m.member_id = e.payee_id
WHERE m.row_num <= m.cutoff
ORDER BY txn_count ASC, m.member_id ASC
LIMIT 5
) sub;

#5、找出交易次数增长率最高的成员ID及其增长率?【标准格式:M000001,24.44%】 Find the member ID with the highest transaction growth rate and calculate their growth rate. [Answer format: M000001,24.44%]

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
WITH monthly_stats AS (
SELECT
member_id,
DATE_FORMAT(timestamp, '%Y-%m-%d %H:%i:%s') AS month_group,
COUNT(*) AS current_count,
LAG(COUNT(*)) OVER (
PARTITION BY member_id
ORDER BY DATE_FORMAT(timestamp, '%Y-%m-%d %H:%i:%s')
) AS prev_count
FROM (
SELECT payer_id AS member_id, timestamp FROM transactions
UNION ALL
SELECT payee_id AS member_id, timestamp FROM transactions
) combined
GROUP BY member_id, month_group
)
SELECT
member_id,
CONCAT(
ROUND(
MAX((current_count - prev_count) / prev_count * 100), -- 计算最大增长率
2 -- 四舍五入到两位小数
),
'%' -- 添加百分号
) AS growth_rate
FROM monthly_stats
WHERE prev_count > 0 -- 过滤上月无交易的情况
GROUP BY member_id
ORDER BY MAX((current_count - prev_count) / prev_count) DESC -- 按增长率降序排列
LIMIT 1; -- 取最大值

但是结果特别奇怪,所以就空着了

#6、统计状态 ‘active’、90天无交易、历史交易额前20%的成员数?【标准格式:111】 Count active members, no transactions in 90 days, top 20% by total transaction amount. [Answer format: 111]

4803

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
SELECT COUNT(*) AS result
FROM (
SELECT
m.member_id,
RANK() OVER (ORDER BY total_amount DESC) AS amount_rank,
COUNT(*) OVER () AS total_members
FROM members m
LEFT JOIN (
SELECT
member_id,
SUM(amount) AS total_amount
FROM (
SELECT payer_id AS member_id, amount FROM transactions
UNION ALL
SELECT payee_id AS member_id, amount FROM transactions
) t
GROUP BY member_id
) ta ON m.member_id = ta.member_id
WHERE m.status = 'active'
AND m.member_id NOT IN (
SELECT DISTINCT member_id
FROM (
SELECT payer_id AS member_id FROM transactions
WHERE timestamp >= CURDATE() - INTERVAL 90 DAY
UNION
SELECT payee_id AS member_id FROM transactions
WHERE timestamp >= CURDATE() - INTERVAL 90 DAY
) recent_tx
)
) sub
WHERE amount_rank <= CEIL(total_members * 0.2);

7、找出有上线且直接下线最多的成员ID及下线数?【标准格式:M000001:数量】 Find the member ID with the most direct subordinates who also has an upline.? [Answer format: M000001:Count]

M009748:18

1
2
3
4
5
6
7
SELECT 
CONCAT(upline_id, ':', COUNT(*)) AS result
FROM hierarchy
WHERE upline_id IN (SELECT member_id FROM hierarchy WHERE upline_id IS NOT NULL)
GROUP BY upline_id
ORDER BY COUNT(*) DESC
LIMIT 1;

#8、比较最早年份Q1与Q4注册成员的总交易额,指出哪个更高及具体金额?【标准格式:Q1:123.12】 Compare Q1 vs Q4 total transactions in the earliest year. Indicate which is higher and the amount. [Answer example: Q1:123.12]

Q1:18,161,858.93

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
WITH earliest_year AS (
SELECT YEAR(MIN(registration_date)) AS year FROM members
),
q1_members AS (
SELECT member_id
FROM members
WHERE YEAR(registration_date) = (SELECT year FROM earliest_year)
AND MONTH(registration_date) BETWEEN 1 AND 3
),
q4_members AS (
SELECT member_id
FROM members
WHERE YEAR(registration_date) = (SELECT year FROM earliest_year)
AND MONTH(registration_date) BETWEEN 10 AND 12
),
q1_transactions AS (
SELECT DISTINCT transaction_id, amount
FROM transactions
WHERE payer_id IN (SELECT member_id FROM q1_members)
OR payee_id IN (SELECT member_id FROM q1_members)
),
q4_transactions AS (
SELECT DISTINCT transaction_id, amount
FROM transactions
WHERE payer_id IN (SELECT member_id FROM q4_members)
OR payee_id IN (SELECT member_id FROM q4_members)
),
q1_total AS (
SELECT COALESCE(SUM(amount), 0) AS total FROM q1_transactions
),
q4_total AS (
SELECT COALESCE(SUM(amount), 0) AS total FROM q4_transactions
)
SELECT
CASE
WHEN q1_total.total > q4_total.total THEN CONCAT('Q1:', FORMAT(q1_total.total, 2))
ELSE CONCAT('Q4:', FORMAT(q4_total.total, 2))
END AS result
FROM q1_total, q4_total;

9、找出成员地址中最常出现的省份,并计算居住在该省份的所有成员的总提现金额?【标准格式:省份,123.12】 Find the most common province in member addresses and calculate its total withdrawals. [Answer format: Province,123.12]

江苏,2301065.13

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
SELECT 
CONCAT(
(SELECT SUBSTRING_INDEX(address, '省', 1)
FROM members
GROUP BY SUBSTRING_INDEX(address, '省', 1)
ORDER BY COUNT(*) DESC
LIMIT 1),
',',
COALESCE((
SELECT SUM(amount)
FROM transactions
WHERE type = 'withdrawal'
AND payer_id IN (
SELECT member_id
FROM members
WHERE SUBSTRING_INDEX(address, '省', 1) = (
SELECT SUBSTRING_INDEX(address, '省', 1)
FROM members
GROUP BY SUBSTRING_INDEX(address, '省', 1)
ORDER BY COUNT(*) DESC
LIMIT 1
)
)
), 0)
) AS result;

10、计算最高层领导者的净资金流?【标准格式:123.12】 Calculate the financial flow for the top leader. [Answer Format: 123.12]

17443.99

1
2
3
4
5
6
7
8
9
10
SELECT 
ROUND(
(SELECT COALESCE(SUM(amount), 0)
FROM transactions
WHERE payee_id = (SELECT member_id FROM hierarchy WHERE upline_id IS NULL LIMIT 1))
-
(SELECT COALESCE(SUM(amount), 0)
FROM transactions
WHERE payer_id = (SELECT member_id FROM hierarchy WHERE upline_id IS NULL LIMIT 1))
, 2) AS result;

服务器取证

这次的服务器难就难在是外国的一个nas服务器unraid,我之前见都没见过所以当时打的时候重构不起来就只能简单的从系统文件里找到几道题的答案。所以现在重新来看这道服务器还是先重构起来,网上看别人wp有两种重构方式,第一种是利用U盘进行重构,第二种是不用U盘手动仿真。这里我用第二种方式进行重构(比较方便)

首先当时我同时仿真了sever1和sever2但是发现没法重构,sever1在启动时无法找到或访问其关键的启动设备(通常是 U 盘),sever2没有找到操作系统。根据两个盘启动时的日志可以猜测,sever1是系统盘(USB闪存盘) ,sever2是数据盘。接下来开始重构(不用U盘)

unraid服务器重构

Arsenal Image Mounter(免费版就行)挂载server2

 2025-05-28 202949.png

将挂载的磁盘 脱机

1
2
3
4
5
diskpart
list disk
select disk 4 //根据具体编号更改
offline disk
exit

qemu-img将server1转成vmdk文件

1
qemu-img.exe convert -f raw -O vmdk A:\贾韦码\服务器\server1.001 server1.vmdk

用VM新建虚拟机(管理员启动),选择自定义然后兼容性默认,接着选择稍后安装操作系统

内核版本选择其他linux 6.x 内核64位

接着就一直点下一步(处理器数量多点,内存大点)

虚拟磁盘类型选择IDE

选择使用物理磁盘

选择脱机的磁盘

完成后,改引导模式

将上面转化好的server1.vmdk放入虚拟机目录

然后修改虚拟机启动配置文件 sever1.vmx(关掉虚拟机的选项卡才能修改),以USB的形式把server1.vmdk作为系统引导盘(直接添加就可以)

保存关闭后启动虚拟机可以 发现已经成功了

在计算机谷歌浏览器里的密码管理里可以找到root用户的密码

登录

接着就是配网,找到network.cfg文件

根据network.cfg文件的配置,新建一个虚拟网络,配置到同一网段

接着更改网络适配器

访问192.168.56.129

登录root/P@ssw0rd,发现磁盘被加密了

Unraid会保存先前的硬盘识别符, 从而导致硬盘无法读取,所以先点击新配置然后清楚硬盘配置

这时候返回主界面,改插槽数为3然后添加磁盘

但是发现此时加密是自动 ,进入磁盘配置将文件系统类型改为zfs加密

下拉添加密钥文件,这里的密钥文件就是计算机取证时得到的keyfile.feyfile

点击启动,过一会就可以看到磁盘上线了

到这里服务器就重构的差不多了,现在开始重构网站

先把ssh连上(不连看着太难受了)

这里由于没有systemctl和service命令,所以我直接看ssh的配置文件

看到端口为22,查看端口占用

1
lsof -i :22

可以看到ssh服务是开启的,直接连接(这下舒服了)

查看docker容器

1
docker ps -a

全部开启

1
docker start 9f6a38d4d773 00d120108416 8fb6d5741022 feec46efa566  182b0d619b1a

访问网站看看

windows服务器重构

打开文件,里面有一个Win10的虚拟机

打开发现需要密码

在火眼里找到vmx所在位置,导出整个文件夹到本地(这里我也不知道为什么仿真后的文件夹里只有vmx)

这里尝试用pyvmx-cracker来爆破密码,但是发现跑不出来提示说可能是vmx文件错误或者没有密码,这里的vmx文件能够正常使用所以应该不是文件错误,所以大概率是没有密码的

所以这里直接编辑Windows 10 x64.vmx将加密部分(框起来的部分)直接删除,就可以进入了

 2025-05-30 005734.png

直接打开就重构成功了,但是发现需要密码

直接尝试123456就登录成功了,进入后随便创建个新的Microsoft帐户(邮箱跟电话都随便输就行)

开始做题

1、分析服务器检材,找出服务器系统启动盘的GUID?【标准格式:数字、字母、-的组合,字母大写】 Analyze the server sample to find out the GUID of the server‘s boot disk? [Standard format: a combination of numbers, letters, and -, with the letters capitalized]

0E0F-0005-ADBD-AEEDB4808D64

比赛时以为这个是

重构完直接就能看到

2、找出服务器网关IP?【标准格式:1.1.1.1】 Find the server’s gateway IP. [Answer format: 1.1.1.1]

192.168.56.128

上面重构的时候找到的network.cfg文件可以看到

3、找出服务器数据盘的文件系统格式?【标准格式:ntfs】 Find the server’s data volume’s filesystem. [Answer example: ntfs]

zfs

这是当时比赛的时候没构起来服务器找的

在构造服务器的时候可以看到磁盘1(数据盘)是zfs

4、找出服务器数据盘的解密密钥文件名?【标准格式:abcd】 Find the server’s data volume’s decryption key filename.[Answer format: abcd]

keyfile

这个是在计算机取证的时候找到的,解密磁盘1的时候用到keyfile.keyfile但是这里的格式是abcd所以不加后缀

5、找出服务器密码?【标准格式:key@123】 Find the server’s password. [Answer format: key@123]

P@ssw0rd

在计算机谷歌浏览器里的密码管理里可以找到

6、找出服务器版本号?【标准格式:0.0.0】 Find the version of the server‘s opertating system. [Answer format: 0.0.0]

7.0.1

这是当时比赛的时候没构起来服务器找的

将服务器仿真起来的时候就可以看到了

7、找出服务器内Docker虚拟硬盘位置?【标准格式:/home/abc/adc.raw】 Find the virtual disk of Docker on the server. [Answer format: /home/abc/adc.raw]

/mnt/disk1/docker.img

这是当时比赛的时候没构起来服务器找的

重构服务器后可以在平台设置里的docker设置看到

8、找出服务器启动盘的启动标识?【标准格式:D100,写出型号即可】 Find the boot id of the server’s boot disk. [Answer format: D100 (model number only)]

问的是启动盘,所以直接从启动盘目录找到日志文件目录,发现里面有两个压缩包,导出查看

解压后,在/tower-diagnostics-20250415-2101/system/vars.txt可以找到

9、找出服务器内共有多少个容器镜像?【标准格式:10】 Find the total number of container images on the server. [Answer format: 10]

9

查看docker容器镜像

1
docker images

10、找出服务器内网站服务器所用数据库运行的容器名?【标准格式:abc-abc-1】 Find the container name of the database used by the website server on the server. [Answer format: abc-abc-1]

www-db-1

11、找出服务器内虚拟币容器对外暴露的端口号?【标准格式:8000】 Find the open port of the virtual currency container. [Answer format: 8000]

22556

容器里有一个doge-node不知道是啥有点可疑,搜索查看发现就是虚拟币容器

启动后查看端口为22556

12、找出投资理财网站的域名?【标准格式:3w.baidu.com】 Find the domain name of the investment website. [Answer format: 3w.baidu.com]

2025.pgscup.com

在计算机的浏览器历史记录可以找到

这里可以修改一下本地hosts文件绑定一下域名

访问就可以了

13、找出投资理财网站内连接数据库的密码?【标准格式:password】 Find the database connection password for the investment website. [Answer format: password]

www_dkewl_com

网站容器应该就是www-web-1,进入容器查看

1
docker exec -it feec46efa566 /bin/sh

查找配置文件(如果不是config.php就再找database.php看看 )

1
find ./ -name "config.php"

查看/Index/Conf/config.php可以找到网站配置文件的位置在/Public/config.php

跟进查看得到数据库密码

14、找出投资理财网站后台访问地址?【标准格式:http://www.baidu.com/login.html】 Find the access URL of the investment website’s backend. [Answer format: http://www.baidu.com/login.html]

http://2025.pgscup.com:8080/Www9nwcc/login.html

在容器里感觉有点不好找,找到网站源码导出

在平台中可以找到源码在/mnt/disk1/www

将其压缩后导出

1
tar -czvf www.tar.gz www/*

根据格式提示,直接全搜索login.html

普通用户登录界面是http://2025.pgscup.com:8080/mobile/login.html

所以后台登录界面应该是http://2025.pgscup.com:8080/Www9nwcc/login.html

考虑到后面做题可能会用到,这里也是尝试登录一下后台

先是在源码中找到密码的加密逻辑,找到后发现被混淆了。。。

找到数据库中的密码查看猜测应该是md5加密

那就直接猜测是md5加密,直接伪造123456,登录发现成功了

15、找出投资理财网站会员等级设置存放在那个数据库表内?【标准格式:user】 Find the database table storing the investment website’s membership levels. [Answer format: user]

user_member

根据前面得到的配置信息连接数据库

进入查看,找名字中带有level的表

在xy_level表中可以看到会员等级设置

但是看了别人的wp发现不是这个,放入数据库取证工具查看

将数据库转储为sql文件,导入到数据库取证工具中分析,可以看到会员等级表是user_member

16、找出投资理财网站提现成功的金额?【标准格式:10000】 Find the total amount of successful withdrawals on the investment website. [Answer format: 10000]

5769477

在数据库里有一个提现记录表但是确实空的

在源码中的mysql_data目录下可以找到5个sql文件,逐个查看发现dkewl.sql跟当前数据库的结构和数据相似,可以猜测这个dkewl.sql文件应该是备份文件

在平台中也可以确认dkewl.sql文件是备份文件

将其导入数据库分析工具查看发现只有一条空记录

导入generate_10k_records.sql分析看看

可以看到已经有记录了,但是并不知道status状态是怎么看的(这里我数据库工具有点问题没法导入注释),查看sql文件可以看到注释说1是已提现的

查询体现成功的金额

1
SELECT SUM(money) FROM cash WHERE status = 1;

17、找出投资理财网站内用户王欣的银行卡号?【标准格式:16位数字】 Find the bank card number of user “Wang Xin”(王欣) of the investment website. [Answer format: 16 digits]

2114313505182218

还是在generate_10k_records.sql里查询

1
SELECT * FROM bank WHERE name = '王欣';

18、找出投资理财网站用户的最低提现金额?【标准格式:10000】 Find the minimum cash withdrawal amount for users of the investment website?. [Answer format: 10000]

100

在后台网站信息处可以找到(我已经将两个sql文件都导入到数据库里了)

19、给出存放投资理财用户表内clock为0表示用户处于那种状态?【标准格式:核实】 What status does a clock value of 0 indicate for users in the investment website’s user table? [Answer format: 核实]

未锁定

generate_10k_records.sql的user表可以找到clock列,但是这里我工具有问题还是没有注释

去sql文件中搜索clock找到注释,0的时候是未锁定

20、找出投资理财网站内通过支付宝支付充值状态为未支付的金额?【标准格式:10000】 Find the total amount of unpaid Alipay recharges on the investment website. [Answer format: 10000]

11642201

直接网站后台的充值记录可以找到(我已经将两个sql文件都导入到数据库里了),未处理的为未支付

但是其实这样看有点不准确,还是直接去到数据库中查看

找到对应的recharge表,查看列注释(由于我数据库分析工具有点问题,这里索性就不用了接着用navicat分析)

查询通过支付宝支付充值状态为0的金额

1
SELECT SUM(money) FROM recharge WHERE type = "支付宝扫码" AND status = 0;

21、对贾韦码计算机进行分析,账本系统使用的web框架是什么?【标准格式:Django】 Analyze Jia Wei Ma(贾韦码)’s computer: What web framework does the ledger system use? [Answer example: Django]

Vue

进入桌面后会发现有一个账本,打开后会发现就是我们要的账本系统只是现在没有重构还没法访问

重构完后,重新将vmdk导入到火眼中分析

在浏览记录里可以看到账本系统的标题是Vue App,说明是Vue框架

找到powershell的历史记录

跟着命令启动一下

22、对账本系统进行分析,账本使用的数据库版本是多少?【标准格式:1.1.1】 Analyze the ledger system: What is the database version? [Answer format: 1.1.1]

5.0.3

进入到网站根目录,将源码全部导出

直接全局搜索数据库就找到了是MongoDB数据库

直接全局搜索一下,在C:\Program Files\MongoDB\Server\5.0\bin目录找到mongo.exe查看属性

23、对账本系统进行分析,使用的数据库名称是?【标准格式:test】 Analyze the ledger system: What is the database name? [Answer example: test]

crm

在源码找到环境变量,在环境变量里可以找到MONGODB_URI,可以看到连接的数据库名是crm

24、对账本系统进行分析,用户手机号码在数据库中的加密方法是?【标准格式:xor-325-dfg】 Analyze the ledger system: What encryption method is used for user phone numbers? [Answer format: xor-325-dfg]

aes-128-cbc

连接数据库

但是这里还需要改一个监听ip否则连接不上

找到配置文件,将bindip改为0.0.0.0

接着以管理员启动CMD

1
2
net stop MongoDB
net start MongoDB

此时连接navicat就成功了

进入后在customers表可以发现被加密的手机号,看着像是base64加密,但是发现没法解密说明不是

进入后端查看Customer.js

跟进encrypt,但是发现调用的方法被混淆了

暂时不管先继续跟进,发现全被混淆了

js反混淆一下,尝试恢复一下变量名,分析可以确定加密方式为aes-128-cbc

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
const crypto = require('crypto');
const keyManager = require('./keyManager');

const ALGORITHM = 'aes-128-cbc';
const DEFAULT_IV = Buffer.alloc(16, 0);

const getEncryptionConfig = () => {
try {
const aesKey = keyManager.getAesKey();
return {
key: aesKey,
algorithm: ALGORITHM,
iv: DEFAULT_IV
};
} catch (error) {
console.error('获取加密密钥失败:', error.message);
return {
key: crypto.randomBytes(16),
algorithm: ALGORITHM,
iv: DEFAULT_IV
};
}
};

const encrypt = (() => {
let encryptionConfig;

return (text) => {
if(!text) return '';

try {
if (!encryptionConfig) encryptionConfig = getEncryptionConfig();

const cipher = crypto.createCipheriv(
encryptionConfig.algorithm,
encryptionConfig.key,
encryptionConfig.iv
);

let encryptedData = Buffer.concat([
cipher.update(text.toString(), 'utf8'),
cipher.final()
]);

return encryptedData.toString('base64');
} catch(error) {
console.error('加密处理异常');
return '';
}
};
})();

const generateRandomData = (() => {
const getRandomInt = (min, max) => {
return Math.floor(Math.random() * (max - min + 1)) + min;
};

const getRandomPrefix = () => {
const prefixes = ['131', '132', '133', '134', '135', '136', '137', '138'];
return prefixes[getRandomInt(0, prefixes.length - 1)];
};

return function(encrypted) {
if (!encrypted) return '';

let randomFactor = (encrypted.length * 7) % 100;

if (randomFactor > 60) {
// 生成随机ID号码
const areaCode = getRandomInt(110000, 659000);
const year = getRandomInt(1960, 2000);
const month = String(getRandomInt(1, 12)).padStart(2, '0');
const day = String(getRandomInt(1, 28)).padStart(2, '0');
const seq = String(getRandomInt(1, 999)).padStart(3, '0');
const check = "0123456789X"[getRandomInt(0, 10)];
return `${areaCode}${year}${month}${day}${seq}${check}`;
}

if (randomFactor > 30 && randomFactor <= 60) {
// 生成随机电话号码
const suffix = String(getRandomInt(10000000, 99999999));
return getRandomPrefix() + suffix;
}

// 生成随机地址
const addrComps = [
["湖北省", "四川省", "浙江省", "广东省", "河南省", "山东省"],
["北京", "上海", "广州", "深圳", "成都", "重庆", "杭州", "武汉"],
["中山路", "人民路", "解放路", "建设路", "和平路", "友谊路"]
];

return addrComps[0][getRandomInt(0, addrComps[0].length - 1)] +
addrComps[1][getRandomInt(0, addrComps[1].length - 1)] + "市" +
addrComps[2][getRandomInt(0, addrComps[2].length - 1)] +
getRandomInt(1, 200) + "号";
};
})();

module.exports = {
encrypt,
generateRandomData
};

25、分析crypto.js中的_0x3ad7函数,找出返回加密数据的编码格式?【标准格式:ascii】 Analyze the _0x3ad7 function in crypto.js: What encoding format is used for encrypted data? [Answer example: ascii]

utf8

同上,这里的_0x3ad7也就是反混淆后的encrypt,可以看到是utf8

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
const encrypt = (() => {
let encryptionConfig;

return (text) => {
if(!text) return '';

try {
if (!encryptionConfig) encryptionConfig = getEncryptionConfig();

const cipher = crypto.createCipheriv(
encryptionConfig.algorithm,
encryptionConfig.key,
encryptionConfig.iv
);

let encryptedData = Buffer.concat([
cipher.update(text.toString(), 'utf8'),
cipher.final()
]);

return encryptedData.toString('base64');
} catch(error) {
console.error('加密处理异常');
return '';
}
};
})();

26、分析crypto.js中的_0x3ad7函数,找出使用异常作为控制流的触发语句?【标准格式:Test:connec】 Analyze the _0x3ad7 function in crypto.js: Find the trigger statement using exceptions for control flow. [Answer example: Test:connec]

continue

在反混淆后的代码没有找到,回到混淆的代码查看可以看到是continue

#27、分析keyManager.jsinitializeKeys函数的密钥获取优先级是什么?【标准格式:我是谁>我是谁>我是谁】 Analyze the initializeKeys function in keyManager.js: What is the priority order for key retrieval? [Answer format: Priority1>Priority2>Priority3]

环境变量>主密码解密存储文件>生成新密钥并存储

这题我也不确定直接问的ai

 2025-05-31 222600.png

28、对账本系统进行分析,账本记录的用户总数是多少?【标准格式:1234】 Analyze the ledger system: What is total number of user records? [Answer format: 1234]

上面连接数据库后可以得到登录用户密码但是被加密了

改密码为123456登录

但是我这里发现我后端没有启动,重新启动后发现一个问题,服务器后端连接不上

重新看了一下源码发现api的url对不上

配置适配器添加ip:192.168.100.132

此时再登录就连上后端了但是发现密码被加密为$2b$10$/.kqs./EJ1xkFaJ0CSzoaewUtv/3uhK2c8UbpQ32H41J1yBGRx9HG不知道是什么,登录不上

打到这里死活登不上了先放着不整了。。。

29、对账本系统进行分析,身份证号“430014197812200986”用户的投资金额是多少?【标准格式:111111】 Analyze the ledger system: what is investment amount for user with ID “430014197812200986”. [Answer format: 111111]

30、对账本系统进行分析,姓名为明凤英的客户共有几人?【标准格式:1】 Analyze the ledger system: How many customers named “Ming Fengying” (明凤英) exist? [Answer format: 1]