2025"盘古石杯"决赛服务器集群取证wp
整个服务器集群的重构其实并不复杂,只是步骤比较繁琐,而且对硬件要求很高。目前还是需要手动仿真,用各大厂商的仿真软件无法正常运行,会出现各种各样的问题。此外,硬件条件一定要足够,否则也会出现很多奇奇怪怪的问题,导致仿真失败。
比如说,在配置vSAN的时候会提示最小vSAN内存要求是16G:

因为用到了vsan,所以检材中每台服务器的三块盘分别是系统盘、缓存盘和数据盘。将三块盘分别转换成vmdk格式,然后使用scsi模式挂载,内存设置为16g,cpu我用的8核,配置好三块网卡,IP段需要保证和管理、vsan、vmotion三个网段一致(192.168.10.0/24,192.168.20.0/24,192.168.30.0/24),然后正常启动即可。vcsa也是给的8核16g的配置。可以参考:



启动后记得将域名vcsa.pgs.cup添加进hosts文件。但是进入VCSA会发现vsan还是存在问题,虚拟机都连接不上。检查发现是由于esxi2和3的vsan网段设置的不对,都改成192.168.20段的就可以了。正常搭建起来是这样的:

搭建起来后就可以做后面的题目了。
服务器集群取证
分析技术人员电脑,找出集群管理服务器,并结合服务器进行分析,找出集群服务器内的集群名?【标准格式:Qax_Pgs】
Cluster_Pguscup

找出集群中共有多少台虚拟机?【标准格式:1】
5
最下面2台大小0B的是 vSphere Cluster Services (vCLS) 的代理虚拟机。这是vSphere 7.0及以上版本引入的一个关键服务。vCLS是为了确保集群服务(如DRS - 分布式资源调度和HA - 高可用性)的可靠性和健壮性。即使vCenter Server完全宕机,集群服务也能继续运行。

找出集群中vMotion所用的网段?【标准格式:192.168.1.0】
192.168.30.0
- 登录vCenter Server:
- 导航到主机网络配置: 在左侧导航器中,转到 主机和集群 (Hosts and Clusters)视图。展开集群,然后选择集群中任意一台ESXi主机。点击 配置 (Configure)选项卡。
- 查看VMkernel适配器: 在“配置”选项卡下,找到 网络 (Networking)部分。点击 VMkernel适配器 (VMkernel Adapters)。
- 识别vMotion网段: 在VMkernel适配器列表中,查找 “vMotion” 服务已启用(Status列为“已启用”)的适配器。选中该适配器,在下方详情中即可看到其配置的 IP地址 和 子网掩码。这个IP地址所在的网段就是vMotion网段。

找出集群磁盘组内共存储了多少个iso镜像?【标准格式:1】
2

找出集群内“市场PC”虚拟机在磁盘组中存储的名称?【标准格式:abc123】
win11
- 登录vSphere Client,找到名为“市场PC”的虚拟机。
- 右键单击该虚拟机,选择 “编辑设置” (Edit Settings)。
- 切换到“虚拟机选项” (VM Options) 选项卡。
- 展开“高级” (Advanced) 部分。
- 点击“编辑配置” (Configuration Parameters)。这会打开一个包含所有虚拟机底层配置参数的列表。
- 选择虚拟机选项,查看常规选项,里面包含了虚拟机配置文件和虚拟机工作位置
- 进入vsan对应的位置,可以看到名称是win11


找出管理此集群的服务器vcsa的主机名?【标准格式:www.qianxin.com】
vcsa.pgs.cup

找出vcsa的版本号?【标准格式:1.0.0.00000】
8.0.3.00500

找出vcsa中设置的时间服务器?【标准格式:ntp.ntp.com】
ntp.aliyun.com


找出vcsa每天几点进行备份?【标准格式:08:00】
22:59
找出vcsa管理页面的端口号?【标准格式:1122】
5480

找出vcsa服务器web client登录的账户名?【标准格式:xxx@xxx】
administrator@pgs.cup
思源笔记和拼图里面都有

找出vcsa管理的服务器主机的系统版本号?【标准格式:0.0.0】
8.0.3

*分析vcsa管理的服务器主机的文件系统类型?【标准格式:ntfs】
vsan
这题存疑,ssh到esxi中查看 esxcli storage filesystem list,可以看到3种文件系统类型,<span leaf="">vfat</span> 用于系统引导,<span leaf="">VMFSOS</span> 用于系统数据,<span leaf="">vSAN</span> 用于虚拟机存储


找出vSAN服务所对应的端口组名称?【标准格式:ABcd-eFGH】
DSwitch-vSAN


接上题,该端口组上行端口数量?【标准格式:1】
8

找出vSAN集群许可密钥的前5位?【标准格式:ABC12】
MG292

找出vSAN集群类型?【标准格式:ABC】
HCI

虚拟机取证
分析集群内的虚拟机,找出该组织域名?【标准格式:baidu.com】
pgs.cup

分析集群内的虚拟机,找出DNS服务器系统Build版本?【标准格式:18320】
17763

分析集群内的虚拟机,找出DNS服务器系统初始安装时间?【标准格式: 2025-1-1, 00:00:00】
2025-05-03,15:45:38

分析集群内的虚拟机,找出DNS服务器IP?【标准格式:1.1.1.1】
192.168.10.99

分析集群内的虚拟机,找出DNS服务器内自建了多少条DNS记录?【标准格式:100】
8
查看DNS管理器图形界面
- 打开"服务器管理器" → "工具" → "DNS"
- 展开"正向查找区域"
- 选择你的域名区域
- 在右侧面板中可以看到所有DNS记录
- 手动计数或者查看底部状态栏

系统默认记录(3条):_msdcs (SOA - 起始授权机构)、_msdcs (NS - 名称服务器)、主机(A) - 192.168.10.99
自建的A记录(8条):baocai - 192.168.10.105、dc - 192.168.10.99 、esxi1 - 192.168.10.101 、esxi2 - 192.168.10.102 、esxi3 - 192.168.10.103 、ftp - 192.168.10.99 、meeting - 192.168.10.104、vcsa - 192.168.10.100
分析集群内的虚拟机,找出DNS服务器内,主机ftp对应的IP地址?【标准格式:192.168.1.0】
192.168.10.99
主机ftp对应的IP地址:192.168.10.99
在DNS记录列表中显示:
- 名称: ftp
- 类型: 主机(A)
- 数据:192.168.10.99
这条A记录将主机名"ftp"解析到IP地址192.168.10.99。
分析集群内的虚拟机,找出FTP服务器内2025-05-19 12:25:25上传的文件名?【标准格式:盘古石杯.doc】
全员会议.txt

*分析集群内的虚拟机,找出FTP服务器限制访问的IP地址?【标准格式:192.168.1.0】
这一题存疑。登录ftp服务器后并没有找到限制的IP

但是可以从ftp里面找到一些好玩的东西,比如这个视频

分析集群内的虚拟机,找出市场PC的磁盘大小?【标准格式:100G】
48G

分析集群内的虚拟机,找出市场PC的系统build版本号?【标准格式:18320】
22631

分析集群内的虚拟机,找出市场PC网卡MAC地址?【标准格式:字母小写】
00-50-56-94-0c-14

分析集群内的虚拟机,找出市场PC内话术文件,给出SHA256的前六位?【标准格式:字母小写】
c1031b
文档里有一个无法打开的jpg文件,会发现这其实是一个zip文件,后缀改成了jpg,重新解压就可以看到话术文件了。


分析集群内的虚拟机,找出市场PC内用户SID的后4位?【标准格式:1000】
1002

分析集群内的虚拟机,找出财务PC系统初始安装时间?【标准格式: 2025-1-1, 00:00:00】
2025-05-19,02:56:05

分析集群内的虚拟机,找出财务PC的IP地址?【标准格式:192.168.1.0】
192.168.10.107

分析集群内的虚拟机,找出财务PC电脑内共保存了几个月的员工工资表?【标准格式:1】
17

分析集群内的虚拟机,找出员工“何燕”2025年2月的实发工资?【标准格式:10000.00】
6989.78

*分析集群内的虚拟机,找出该组织2025年5月所有人力成本?【标准格式:1000000.00】
此题存疑。如果仅看2025年5月的工资表,公司成本:基本工资+绩效+奖金+管理津贴+社保+公积金,但是公司交的比例是???272160.31???
此外,财务PC的文档里还有一个收支.rar的加密压缩包,但是没能找到密码,不知道里面有没有线索。


网站服务器取证
分析会议服务器,找出系统内核版本号?【标准格式:1.0.0】
6.8.0

分析会议服务器,找出会议服务器的IP地址?【标准格式:192.168.1.1】
192.168.10.104

*分析会议服务器,找出服务器内设置的DNS地址?【标准格式:192.168.1.2】
此题存疑,有2个dns地址,114.114.114.114和8.8.8.8

分析会议服务器,找出老会议系统所用数据库对外映射的端口号?【标准格式:1443】
8307

分析会议服务器,找出老会议系统所用数据库root密码?【标准格式:admin】
root

分析会议服务器,找出老会议系统用户密码加密方式?【标准格式:md5】
bcrypt
打开老会议系统,一眼ruoyi

分析会议服务器,找出老会议系统用户admin密码加密的盐值?【标准格式:字母大小写及数字组合】
tcB68DmUWKZZmOv8HrDNnO
在 bcrypt 中,格式是:<span leaf="">$2a$<cost>$<22字符salt><31字符hash></span>。
可以看到完整哈希:<span leaf=""></span><br/>
<span leaf="">$2a$10$tcB68DmUWKZZmOv8HrDNnOTJbFqSsYD3olu3qnGix7.tw/Tbl7/qu</span>
- 版本:
<span leaf="">$2a$</span> - 成本参数:
<span leaf="">10</span> - 盐值:
<span leaf="">tcB68DmUWKZZmOv8HrDNnO</span> - 哈希值:
<span leaf="">TJbFqSsYD3olu3qnGix7.tw/Tbl7/qu</span>
<span leaf=""></span><br/>
分析会议服务器,找出老会议系统中共开过几次会议?【标准格式:1】
3

分析会议服务器,找出新会议系统包含几个容器?【标准格式:1】
4
新会议系统使用的是jitsi-meet

分析会议服务器,找出新会议系统对外映射的http端口?【标准格式:1443】
8000
注意审题,是http端口

分析会议服务器,找出新会议系统用于设置强密码的脚本名?【标准格式:shell.sh】
passds.sh

分析会议服务器,找出新会议系统会议协调服务密码的前6位?【标准格式:字母小写】
10fb92

分析会议服务器,找出郝虎友的电话号码?【标准格式:13888888888】
15130670189
使用工资表里的任意一个人名拼音登录,默认密码pgs123456登录

分析会议服务器,找出该组织总公司位于哪个国家?【标准格式:中国】
迪拜

分析会议服务器,找出该组织中国公司财务部门负责人?【标准格式:郝虎友】
曹名媛

财务部门下属有4个用户,但是不知道哪一位是部门负责人。搜索发现leader似乎是曹
/var/lib/docker/containers/b7ea8b9519a00058cd888d72cb5b2db7c98ac4ff25a24265d9be45db1994c4e2/b7ea8b9519a00058cd888d72cb5b2db7c98ac4ff25a24265d9be45db1994c4e2-json.log
分析bocai网站中服务器使用的php版本是多少?【标准格式:1.1.1】
8.3.6

分析bocai网站中执行自动备份数据库的时间是?【标准格式:1点】
5点

分析bocai网站中数据库备份脚本,“2027年6月”的备份密钥是多少?【标准格式:123456】
6863bd7f968ad31a7f389843845688bf2bca0832ff4460df41736465aa619dbf
找到备份脚本,发现经过了多层转换,将最后的eval改成echo,直接输出原始的php代码

/**
* MySQL加密备份脚本(Docker 容器兼容版)
* 用途:每周三凌晨5点备份MySQL数据库并使用AES-256-CBC加密
* 配置为定时任务执行
*/
// 数据库配置(根据实际环境修改)
$db_config = [
'container' => 'www-db-1', // 容器名
'username' => 'skm2332',
'password' => 'skm2332',
'database' => 'skm2332',
];
// 备份设置
$backup_dir = dirname(__FILE__) . '/data/db_backups/'; // 备份目录
$date_format = 'Y-m-d_H-i-s';
$backup_file = $backup_dir . 'db_backup_' . date($date_format) . '.sql';
$encrypted_file = $backup_file . '.enc';
$log_file = $backup_dir . 'backup_log.txt';
// 创建备份目录(如果不存在)
if (!file_exists($backup_dir)) {
mkdir($backup_dir, 0755, true);
// 创建.htaccess文件禁止Web访问
file_put_contents($backup_dir . '.htaccess', "Order allow,deny\nDeny from all");
}
// 记录开始时间
logMessage("开始备份数据库: {$db_config['database']}");
// 设置内存限制
ini_set('memory_limit', '512M');
// 获取加密密钥(按月生成)
function getEncryptionKey() {
$base_key = 'cmf_backup_key_' . date('Ym');
return hash('sha256', $base_key, true);
}
// 写入日志函数
function logMessage($message) {
global $log_file;
file_put_contents($log_file, "[" . date('Y-m-d H:i:s') . "] $message\n", FILE_APPEND);
}
// 执行备份(通过 docker exec 运行 mysqldump)
function backupDatabase($config, $output_file) {
$cmd = sprintf(
'docker exec %s sh -c "mysqldump -u%s -p%s --opt --skip-lock-tables --no-tablespaces --default-character-set=utf8mb4 %s" > %s',
escapeshellarg($config['container']),
escapeshellarg($config['username']),
escapeshellarg($config['password']),
escapeshellarg($config['database']),
escapeshellarg($output_file)
);
logMessage("执行命令: $cmd");
exec($cmd, $output, $return_var);
return $return_var === 0;
}
// 分块加密文件(避免内存溢出)
function encryptFile($input_file, $output_file, $key, $log_file) {
if (!file_exists($input_file)) {
logMessage("错误: 备份文件 '$input_file' 不存在");
return false;
}
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('AES-256-CBC'));
$input_handle = fopen($input_file, 'rb');
$output_handle = fopen($output_file, 'wb');
if (!$input_handle || !$output_handle) {
logMessage("无法打开文件进行加密");
return false;
}
fwrite($output_handle, base64_encode($iv)); // 先写入 IV
while (!feof($input_handle)) {
$plaintext = fread($input_handle, 8192); // 每次读取 8KB
$ciphertext = openssl_encrypt($plaintext, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);
fwrite($output_handle, base64_encode($ciphertext));
$iv = substr($ciphertext, 0, 16); // CBC 模式下,IV 更新为上一块的前16字节
}
fclose($input_handle);
fclose($output_handle);
logMessage("备份文件已加密: " . basename($input_file) . " -> " . basename($output_file));
return true;
}
// 清理旧备份(保留30天内的)
function cleanOldBackups($dir, $days_to_keep = 30) {
$files = glob($dir . '*.sql.enc');
$now = time();
foreach ($files as $file) {
if (is_file($file) && ($now - filemtime($file)) > $days_to_keep * 86400) {
if (unlink($file)) {
logMessage("已删除过期备份文件: " . basename($file));
}
}
}
}
// 主流程
try {
if (!backupDatabase($db_config, $backup_file)) {
throw new Exception("数据库备份失败");
}
logMessage("数据库备份成功: " . basename($backup_file));
$key = getEncryptionKey();
if (!encryptFile($backup_file, $encrypted_file, $key, $log_file)) {
throw new Exception("加密失败");
}
unlink($backup_file);
logMessage("已删除未加密的备份文件: " . basename($backup_file));
cleanOldBackups($backup_dir, 30);
logMessage("备份完成");
echo "✅ 数据库备份和加密已完成。\n";
} catch (Exception $e) {
logMessage("❌ 错误: " . $e->getMessage());
echo "❌ 错误: " . $e->getMessage() . "\n";
}
可以看到加密密钥获取方式在这里:
function getEncryptionKey() {
$base_key = 'cmf_backup_key_' . date('Ym');
return hash('sha256', $base_key, true);
}
脚本里密钥是按月生成的:<span leaf="">$key = hash('sha256', 'cmf_backup_key_' . date('Ym'), true)</span>。所以“2027年6月”的date('Ym') = 202706,参与哈希的明文是:<span leaf="">cmf_backup_key_202706</span>。
对应的 SHA-256 结果为(32字节原始值,脚本用的就是这个原始字节串):6863bd7f968ad31a7f389843845688bf2bca0832ff4460df41736465aa619dbf
分析bocai网站中的备份数据库中,“充值0.41640026BTC”的用户id是什么?【标准格式:12345】
47332
解密数据库,密钥派生规则是:
$key = hash('sha256', 'cmf_backup_key_' . date('Ym'), true)
所以“2025 年 5 月”(<span leaf="">date('Ym') = 202505</span>)的密钥明文是:<span leaf="">cmf_backup_key_202505</span> 对应的 SHA-256 原始 32 字节密钥 为abe74a67558cdc535e1127cf9d1c4177b064ca107a9794c01d29f281ae23173d
加密函数使用AES-256-CBC模式加密,IV先行写入文件中前16个字节。
fwrite($output_handle, base64_encode($iv)); // 先写入 IV
while (!feof($input_handle)) {
$plaintext = fread($input_handle, 8192); // 每次读取 8KB
$ciphertext = openssl_encrypt($plaintext, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv);
fwrite($output_handle, base64_encode($ciphertext));
$iv = substr($ciphertext, 0, 16); // CBC 模式下,IV 更新为上一块的前16字节
}
root@ubuntu24:/opt/www# ls
1.sh app data docker-entrypoint.sh index.html public skm2332_2024-01-23_21-12-13_mysql_data_aUuTe.sql
404.html btcchat docker-compose.yml Dockerfile mysql_scheduled_backup.php simplewind themes
root@ubuntu24:/opt/www# cd data/backup/
root@ubuntu24:/opt/www/data/backup# ls
db_backup_2025-05-16_11-33-41.sql.enc
root@ubuntu24:/opt/www/data/backup# base64 -d db_backup_2025-05-16_11-33-41.sql.enc > backup.sql.bin
root@ubuntu24:/opt/www/data/backup# dd if=backup.sql.bin of=iv.bin bs=1 count=16
16+0 records in
16+0 records out
16 bytes copied, 0.000182208 s, 87.8 kB/s
root@ubuntu24:/opt/www/data/backup# dd if=backup.sql.bin of=cipher.bin bs=1 skip=16
3849872+0 records in
3849872+0 records out
3849872 bytes (3.8 MB, 3.7 MiB) copied, 3.87836 s, 993 kB/s
root@ubuntu24:/opt/www/data/backup# KEY_HEX=abe74a67558cdc535e1127cf9d1c4177b064ca107a9794c01d29f281ae23173d
root@ubuntu24:/opt/www/data/backup# IV_HEX=$(xxd -p iv.bin)
root@ubuntu24:/opt/www/data/backup# openssl enc -aes-256-cbc -d -in cipher.bin -out backup.sql -K "$KEY_HEX" -iv "$IV_HEX"
root@ubuntu24:/opt/www/data/backup# ls
backup.sql backup.sql.bin cipher.bin db_backup_2025-05-16_11-33-41.sql.enc iv.bin
解密得到原始的sql备份文件

第二列是用户id,所以是47332

分析bocai网站中的备份数据库中,网站支付方式有几种?【标准格式:1】
3
注意这里需要从备份文件中查看。

*分析bocai网站上有一个自毁程序,请问自毁程序的运行密钥是多少?【标准格式:asdfghjkio1234】
此题存疑,说实话一直都没有找到自毁程序在哪里,/opt/www/1.sh 看上去很可疑


确定是 OpenSSL enc 密文
分析bocai网站上容器启动过程中运行的第一个程序是什么?【标准格式:aaaaaa-ssssssssss.jj】
docker-entrypoint.sh

分析bocai网站,管理员登录密码的加密方法是什么?【标准格式:你好+你好suanfa1】
###+md5(22GtFeAKH41xK7NS9h+md5(密码))
加盐+双重md5
跟一下管理员登录代码,这里用cmf_compare_password函数对比密码

进入cmf_compare_password,数据库里的密码有两种可能的加密方式,新方式:以 "###" 开头;旧方式:没有 "###" 前缀,走 cmf_password_old() 算法。

我们查看数据库里管理员表,登录密码是###开头的,那么就查看cmf_password算法。

跟到cmf_password,发现用到了一个authcode和密码的md5拼接,再算md5,这个authcode是放在配置文件里面的,从下面代码中可见它去读的是 <span leaf="">database.php</span> 里的配置项。

这是thinkcmf项目,配置文件位于项目根目录下的 <span leaf="">data/conf/</span> 或 <span leaf="">config/</span>:老版本是<span leaf="">data/conf/database.php,新一点的是</span><span leaf="">config/database.php</span>

分析bocai网站,管理员登陆密码的盐值是多少?【标准格式:35Xp9LmBR2aQwE8sT0d】
22GtFeAKH41xK7NS9h
从上一题分析可得。
分析bocai网站的后台管理登录目录?【标准格式:zxcvb/qwery/ujnkmzcxvbnmqwertlkjhgf】
admin/public/loginnaknvajvnlassanjx
查看日志文件,
"LogPath": "/var/lib/docker/containers/50fff335f0cc6438eb81fa7590031ccf674faa1b8bee3a9bbb8fd7bb3b70494d/50fff335f0cc6438eb81fa7590031ccf674faa1b8bee3a9bbb8fd7bb3b70494d-json.log"

*分析bocai网站源码,理解其多级分佣算法,并计算在一笔100元交易中,一个5级推荐链最多能获得多少佣金?【标准格式:10元】
此题存疑。在app/function.php里面看到了很多佣金相关的函数,问ai得到:
主要的分佣函数和比例配置
- 直推奖 (zhitui 函数)
1级:5%2级:5%3级:4%4级:4%5级:3%
- 佣金奖 (yongjinjiang 函数) 配置与直推奖相同
- 团队奖 (temajiang 函数)
level1 5% level2 3% level3 1%
- 交易佣金 (traderjiang 函数) 这是按用户等级的差额佣金
理论最大佣金计算(以直推奖为例)假设5级推荐链,每级都能拿到佣金:
1级推荐人:100 × 5% = 5元2级推荐人:100 × 5% = 5元3级推荐人:100 × 4% = 4元4级推荐人:100 × 4% = 4元5级推荐人:100 × 3% = 3元
单个奖励机制最多:21元实际计算需要考虑的因素
用户等级限制 - 不同等级用户能拿到的层数不同激活条件 - 需要满足特定条件才能获得奖励多重奖励叠加 - 可能同时触发多种奖励机制
查询结果分析:
只有msgid=710的记录(团队奖)所有bfb都是5,说明主要发放的是第1级的5%奖励
完整的奖励机制分析
- 直推奖
<span leaf="">zhitui</span>:5%+5%+4%+4%+3% = 21 - 佣金奖
<span leaf="">yongjinjiang</span>:前 3 级 5%+5%+4% = 14 - 团队奖
<span leaf="">temajiang</span>:前 3 级 5%+3%+1% = 9 - 领导奖
<span leaf="">ldjiang</span>:通过最优等级序列可拿 10%+1%+1%+1%+1% = 14
合计:21 + 14 + 9 + 14 = 58 元
分析bocai网站,签到奖励是多少?【标准格式:2.22RMB】
0.01USDT
查看源码,找到签到部分的函数,签到操作会对数据库里qiandao表和jiangli表进行写入操作,jiangli表msgid为720表示签到。

可以看到签到时间是按照小时来计算的,签到积分奖励0.01,但是0.01什么单位呢?

继续查看上述代码,发现获取的jifentype是xjjifen,再搜索xjjifen的定义,发现是USDT。

由此可得签到积分奖励为0.01USDT
另外也可通过仿真进入网站来查看,但是要注意对原数据库内数据的影响。尝试恢复bocai网站,发现mysql起不来。错误原因: MySQL容器启动失败的原因是文件挂载配置有问题。错误信息显示试图将一个SQL文件 <span leaf="">/opt/www/skm2332_2024-01-23_21-12-13_mysql_data_aUuTe.sql</span> 挂载到容器内的 <span leaf="">/docker-entrypoint-initdb.d/init.sql</span>,但挂载类型不匹配。

去路径下查看,原来skm2332_2024-01-23_21-12-13_mysql_data_aUuTe.sql是文件夹格式。于是修改docker-compose.yml,将docker-compose.yml中的挂载配置改为挂载目录:
volumes: - mysql_data:/var/lib/mysql - ./skm2332_2024-01-23_21-12-13_mysql_data_aUuTe.sql:/docker-entrypoint-initdb.d/ # 改为目录挂载
然后将解密后的sql文件放到 ./skm2332_2024-01-23_21-12-13_mysql_data_aUuTe.sql/路径下,重启docker-compose
docker-compose down
docker-compose up -d

可以发现服务都起来了,bocai网站也可以访问了

改管理员密码进后台,注意用户名是mng,改完密码记得保存,这里密码改为123456


成功登录后台

但是似乎没找到什么有效信息,转而登录普通用户界面,同样是修改密码登录

点击签到,奖励0.01

查看账户流水,奖励0.01USDT

分析bocai网站,签到间隔时间是多久?【标准格式:23中文】
1小时/60分钟
再次点击签到提示下一小时再来,由此可见间隔时间为1小时

分析bocai网站,得到签到奖励的用户共有多少?【标准格式:23】
9
注意这里使用的是恢复备份后的数据库,看了下签到表总共有42条数据,把用户去重,所以应该是9
SELECT COUNT(DISTINCT userid) as total_users FROM cmf_qiandao;


分析bocai网站,提现成功的用户有几个?【标准格式:23】
1
先查看提现功能的位置,在trade/finaceController下面的withdrawpost方法里面

可以看到进行提现操作时会对2张表进行操作,分别是jiangli和withdraw,msgid=21是提现扣款,msgid=22是手续费

但是如何知道提现是否成功呢,从数据表中查看withdraw表中包含status字段,且值为0或1,尝试继续查看源码

- status = 0:默认状态,待处理/待审核
- status = 1:提现成功
两种提现方式的处理逻辑
- 微信提现 (type=2)
- 调用第三方API
<span leaf="">http://api.zs004.cn/api/api/withdraw</span> - 如果API返回
<span leaf="">code='40011'</span>,自动将status更新为1(成功)
- 调用第三方API
- 银行卡提现 (type=1)
- 只插入记录,status保持默认值0
- 需要管理员手动审核处理
注意到 <span leaf="">withdraweditpost()</span> 函数开头有 <span leaf="">return;</span>,这意味着这个函数目前是被禁用的。所以可能:
- 微信提现功能已经停用
- 只有之前的记录中可能有 status=1 的成功记录

直接查看后台管理,提现成功只有2次,用户为同一个,因此提现成功用户仅有1人。



