第三届盘古石杯国际电子数据取证比赛决赛 2025 决赛

第三届盘古石杯国际电子数据取证比赛决服务器取证wp

围绕 第三届盘古石杯国际电子数据取证比赛决赛 的公开复盘与解题记录。

作者:x3x 发布日期:2026-06-14 43 次阅读

2025"盘古石杯"决赛服务器集群取证wp

整个服务器集群的重构其实并不复杂,只是步骤比较繁琐,而且对硬件要求很高。目前还是需要手动仿真,用各大厂商的仿真软件无法正常运行,会出现各种各样的问题。此外,硬件条件一定要足够,否则也会出现很多奇奇怪怪的问题,导致仿真失败。

比如说,在配置vSAN的时候会提示最小vSAN内存要求是16G: image.png

因为用到了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的配置。可以参考: image.png

image.png

image.png

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

搭建起来后就可以做后面的题目了。

服务器集群取证

分析技术人员电脑,找出集群管理服务器,并结合服务器进行分析,找出集群服务器内的集群名?【标准格式:Qax_Pgs】

Cluster_Pguscup

image.png

找出集群中共有多少台虚拟机?【标准格式:1】

5

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

找出集群中vMotion所用的网段?【标准格式:192.168.1.0】

192.168.30.0

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

image.png

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

2

image.png

找出集群内“市场PC”虚拟机在磁盘组中存储的名称?【标准格式:abc123】

win11

  1. 登录vSphere Client,找到名为“市场PC”的虚拟机。
  2. 右键单击该虚拟机,选择 “编辑设置” (Edit Settings)。
  3. 切换到“虚拟机选项” (VM Options) 选项卡。
  4. 展开“高级” (Advanced) 部分。
  5. 点击“编辑配置” (Configuration Parameters)。这会打开一个包含所有虚拟机底层配置参数的列表。
  6. 选择虚拟机选项,查看常规选项,里面包含了虚拟机配置文件和虚拟机工作位置
  7. 进入vsan对应的位置,可以看到名称是win11image-20250831000741984.png

image-20251010173510404.png

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

vcsa.pgs.cup

image.png

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

8.0.3.00500

image.png

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

ntp.aliyun.com

image.png

image.png

找出vcsa每天几点进行备份?【标准格式:08:00】

22:59

找出vcsa管理页面的端口号?【标准格式:1122】

5480

image-20250831164327685.png

找出vcsa服务器web client登录的账户名?【标准格式:xxx@xxx】

administrator@pgs.cup

思源笔记和拼图里面都有 image-20250831164437287.png image-20250831164741774.png

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

8.0.3

image-20250831003622670.png

*分析vcsa管理的服务器主机的文件系统类型?【标准格式:ntfs】

vsan

这题存疑,ssh到esxi中查看 esxcli storage filesystem list,可以看到3种文件系统类型,<span leaf="">vfat</span> 用于系统引导,<span leaf="">VMFSOS</span> 用于系统数据,<span leaf="">vSAN</span> 用于虚拟机存储 image-20251010175835953.png

image.png

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

DSwitch-vSAN

image.png

image.png

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

8

image-20251010181449751.png

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

MG292

image.png

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

HCI

image.png

虚拟机取证

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

pgs.cup

image.png

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

17763

image.png

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

2025-05-03,15:45:38

image.png

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

192.168.10.99

image.png

分析集群内的虚拟机,找出DNS服务器内自建了多少条DNS记录?【标准格式:100】

8

查看DNS管理器图形界面

  1. 打开"服务器管理器" → "工具" → "DNS"
  2. 展开"正向查找区域"
  3. 选择你的域名区域
  4. 在右侧面板中可以看到所有DNS记录
  5. 手动计数或者查看底部状态栏 image.png

系统默认记录(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

image.png

*分析集群内的虚拟机,找出FTP服务器限制访问的IP地址?【标准格式:192.168.1.0】

这一题存疑。登录ftp服务器后并没有找到限制的IP image.png

但是可以从ftp里面找到一些好玩的东西,比如这个视频 image-20251010193031102.png image-20251010193041042.png image-20251010193356940.png

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

48G

image.png

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

22631

image.png

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

00-50-56-94-0c-14

image.png

分析集群内的虚拟机,找出市场PC内话术文件,给出SHA256的前六位?【标准格式:字母小写】

c1031b

文档里有一个无法打开的jpg文件,会发现这其实是一个zip文件,后缀改成了jpg,重新解压就可以看到话术文件了。 image.png

image.png

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

1002

image.png

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

2025-05-19,02:56:05

image.png

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

192.168.10.107

image.png

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

17

image.png

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

6989.78

image.png

*分析集群内的虚拟机,找出该组织2025年5月所有人力成本?【标准格式:1000000.00】

此题存疑。如果仅看2025年5月的工资表,公司成本:基本工资+绩效+奖金+管理津贴+社保+公积金,但是公司交的比例是???272160.31???

此外,财务PC的文档里还有一个收支.rar的加密压缩包,但是没能找到密码,不知道里面有没有线索。 image-20251010212603824.png

image.png

网站服务器取证

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

6.8.0

image.png

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

192.168.10.104

image.png

*分析会议服务器,找出服务器内设置的DNS地址?【标准格式:192.168.1.2】

此题存疑,有2个dns地址,114.114.114.114和8.8.8.8 image.png

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

8307

image.png

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

root

image.png

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

bcrypt

打开老会议系统,一眼ruoyi image.png image.png

分析会议服务器,找出老会议系统用户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

image.png

分析会议服务器,找出新会议系统包含几个容器?【标准格式:1】

4

新会议系统使用的是jitsi-meet image.png image-20251010230610639.png

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

8000

注意审题,是http端口 image-20251010193313431.png

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

passds.sh

image.png

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

10fb92

image.png

分析会议服务器,找出郝虎友的电话号码?【标准格式:13888888888】

15130670189

使用工资表里的任意一个人名拼音登录,默认密码pgs123456登录 image.png

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

迪拜

image.png

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

曹名媛

image.png image-20251010201007064.png

财务部门下属有4个用户,但是不知道哪一位是部门负责人。搜索发现leader似乎是曹

/var/lib/docker/containers/b7ea8b9519a00058cd888d72cb5b2db7c98ac4ff25a24265d9be45db1994c4e2/b7ea8b9519a00058cd888d72cb5b2db7c98ac4ff25a24265d9be45db1994c4e2-json.log

分析bocai网站中服务器使用的php版本是多少?【标准格式:1.1.1】

8.3.6

image.png

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

5点

image.png

分析bocai网站中数据库备份脚本,“2027年6月”的备份密钥是多少?【标准格式:123456】

6863bd7f968ad31a7f389843845688bf2bca0832ff4460df41736465aa619dbf

找到备份脚本,发现经过了多层转换,将最后的eval改成echo,直接输出原始的php代码 image.png

/**
 * 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备份文件

image.png

第二列是用户id,所以是47332 image.png

分析bocai网站中的备份数据库中,网站支付方式有几种?【标准格式:1】

3

注意这里需要从备份文件中查看。 image.png

*分析bocai网站上有一个自毁程序,请问自毁程序的运行密钥是多少?【标准格式:asdfghjkio1234】

此题存疑,说实话一直都没有找到自毁程序在哪里,/opt/www/1.sh 看上去很可疑 image.png

image.png

确定是 OpenSSL enc 密文

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

docker-entrypoint.sh

image.png

分析bocai网站,管理员登录密码的加密方法是什么?【标准格式:你好+你好suanfa1】

###+md5(22GtFeAKH41xK7NS9h+md5(密码))

加盐+双重md5

跟一下管理员登录代码,这里用cmf_compare_password函数对比密码 image.png

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

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

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

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

分析bocai网站,管理员登陆密码的盐值是多少?【标准格式:35Xp9LmBR2aQwE8sT0d】

22GtFeAKH41xK7NS9h

从上一题分析可得。

分析bocai网站的后台管理登录目录?【标准格式:zxcvb/qwery/ujnkmzcxvbnmqwertlkjhgf】

admin/public/loginnaknvajvnlassanjx

查看日志文件,

"LogPath": "/var/lib/docker/containers/50fff335f0cc6438eb81fa7590031ccf674faa1b8bee3a9bbb8fd7bb3b70494d/50fff335f0cc6438eb81fa7590031ccf674faa1b8bee3a9bbb8fd7bb3b70494d-json.log" image.png

*分析bocai网站源码,理解其多级分佣算法,并计算在一笔100元交易中,一个5级推荐链最多能获得多少佣金?【标准格式:10元】

此题存疑。在app/function.php里面看到了很多佣金相关的函数,问ai得到:

主要的分佣函数和比例配置

  1. 直推奖 (zhitui 函数)

1级:5%2级:5%3级:4%4级:4%5级:3%

  1. 佣金奖 (yongjinjiang 函数) 配置与直推奖相同
  2. 团队奖 (temajiang 函数)

level1 5% level2 3% level3 1%

  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表示签到。 image.png

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

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

由此可得签到积分奖励为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>,但挂载类型不匹配。 image.png

去路径下查看,原来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 image.png

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

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

image.png

成功登录后台 image.png

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

点击签到,奖励0.01 image.png

查看账户流水,奖励0.01USDT image.png

分析bocai网站,签到间隔时间是多久?【标准格式:23中文】

1小时/60分钟

再次点击签到提示下一小时再来,由此可见间隔时间为1小时

image.png

分析bocai网站,得到签到奖励的用户共有多少?【标准格式:23】

9

注意这里使用的是恢复备份后的数据库,看了下签到表总共有42条数据,把用户去重,所以应该是9

SELECT COUNT(DISTINCT userid) as total_users FROM cmf_qiandao; image-20251010202819358.png

image-20251010202932320.png

分析bocai网站,提现成功的用户有几个?【标准格式:23】

1

先查看提现功能的位置,在trade/finaceController下面的withdrawpost方法里面 image.png

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

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

  • status = 0:默认状态,待处理/待审核
  • status = 1:提现成功

两种提现方式的处理逻辑

  1. 微信提现 (type=2)
    • 调用第三方API <span leaf="">http://api.zs004.cn/api/api/withdraw</span>
    • 如果API返回 <span leaf="">code='40011'</span>,自动将status更新为1(成功)
  2. 银行卡提现 (type=1)
  • 只插入记录,status保持默认值0
  • 需要管理员手动审核处理

注意到 <span leaf="">withdraweditpost()</span> 函数开头有 <span leaf="">return;</span>,这意味着这个函数目前是被禁用的。所以可能:

  • 微信提现功能已经停用
  • 只有之前的记录中可能有 status=1 的成功记录 image.png

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