数证杯初赛服务器取证

1. 对服务器检材进行分析,站点服务器可能是从哪个云服务平台上调证过来的?(填写汉字,答案格式:亿速云)

阿里云

![image-20250926081620556](F:\取证题\00_练习题_顺心借\服务器题目\image-20250926081620556.png)

火眼仿真,在加载的时候,系统盘和数据盘前后挂载

2. 对服务器检材进行分析,站点服务器中数据库的密码是?(按实际值填写)

Sxy000**

有一个jar包

步骤

ss -lntp
查看正在运行的端口程序

nginx -T

查看nginx是哪种配置

利用nginx+php+mysql的组合搭配。第二种是jar+nginx+mysql。第二种的nginx只做反向代理的作用。

反向代理的标识为peoxy_pass http:

find / -name *.jar(排除openjdk-x.x.xxx) 或者 history | grep .jar

查看jar包位置

下载到本机后,利用命令jar -xvf example.jar解压

application.yaml中active的值,确定正在使用的包是哪一个

![image-20250926092551734](F:\取证题\00_练习题_顺心借\服务器题目\image-20250926092551734.png)

然后到对应的包查看配置

数据库密码在下面的结构里

spring:
  datasource:
    password: 

3. 对服务器检材进行分析,站点服务器用于提供服务发现的工具名是?(答案格式:zookeeper)

Consul

根据服务器检材中的历史命令分析,站点服务器用于提供服务发现的工具是 Consul

关键证据:

  1. 安装 Consul

    • 命令 31-35、41-50 显示通过 HashiCorp 的 yum 仓库安装 Consul,或下载并解压 Consul 的二进制包。
  2. 配置和启动 Consul

    • 命令 53-57 显示创建了 consul.sh 脚本并执行,用于启动 Consul 服务。
    • 命令 63 测试 Consul 的 API 接口(curl 127.0.0.1:8500),Consul 默认使用 8500 端口提供服务发现和健康检查等功能。
  3. Consul 服务确认

    • 命令 641 再次执行 ./consul.sh 启动 Consul,表明该工具是持续运行的服务发现工具。

因此,站点服务器用于提供服务发现的工具是 Consul

4. 对服务器检材进行分析,站点服务器数据库配置文件名是?(答案格式:database.php)

application-sxj.yaml

第二题找到的文件

5. 对服务器检材进行分析,该网站涉及的APP名称是?(答案格式:微信)

顺心借

在配置文件的最后部分有明确的APP配置:

yaml

app:
name: 顺心借
user_name: 47892eff-bf47-430f-af4a-26d5992e2013
password: 2957aad5-0f29-4575-86c0-6504e5154ef4

![image-20250926093534496](F:\取证题\00_练习题_顺心借\服务器题目\image-20250926093534496.png)

6. 对服务器检材进行分析,该网站用于存储大量身份证照的OSS中的AccessKeyID后八位是?(答案格式:按实际值填写)

EuZJybzD

![image-20250926093642812](F:\取证题\00_练习题_顺心借\服务器题目\image-20250926093642812.png)

7. 对服务器检材进行分析,站点服务器用于消息转发代理工具所使用的端口号是?(填写数字,答案格式:3306)

5672

消息转发代理工具(RabbitMQ)

![image-20250926093750813](F:\取证题\00_练习题_顺心借\服务器题目\image-20250926093750813.png)

8. 对服务器检材进行分析,站点服务器用于启动定时任务的代码片段存在于?(答案格式:LoginIndex.class)

MobileStatusTask.class

![image-20250926094539853](F:\取证题\00_练习题_顺心借\服务器题目\image-20250926094539853.png)

![image-20250926094634302](F:\取证题\00_练习题_顺心借\服务器题目\image-20250926094634302.png)

9. 对服务器检材进行分析,站点服务器用于验证用户输入的验证码是否匹配的代码片段存在于?(答案格式:LoginIndex.class)

AdminIndexConller.class

![image-20250926095028608](F:\取证题\00_练习题_顺心借\服务器题目\image-20250926095028608.png)

![image-20250926095016549](F:\取证题\00_练习题_顺心借\服务器题目\image-20250926095016549.png)

10. 对服务器检材进行分析,数据库服务器中Docker容器镜像中mysql的镜像ID号前6位是?(答案格式:123asd)

23b013

之前理解错误了,这两个E01是分别加载的,就是两部完整独立的虚拟机,并不是前后加载在同一个虚拟机里。

docker在data虚拟机里面

先输入

ss -lntp

查看服务打开情况,没看到docker

systemctl start docker

启动

然后docker images

![image-20250926193702471](F:\取证题\00_练习题_顺心借\服务器题目\image-20250926193702471.png)

11. 对服务器检材进行分析,数据库服务器中DockerCompose的版本号是?(答案格式:1.1.1)

2.27.1

docker-compose --version未响应

用docker compose version

![image-20250926195641016](F:\取证题\00_练习题_顺心借\服务器题目\image-20250926195641016.png)

![image-20250926195144224](F:\取证题\00_练习题_顺心借\服务器题目\image-20250926195144224.png)

12. 对服务器检材进行分析,数据库服务器中用于存储后台登录账号的数据表名是?(答案格式:login)

sys_user

![image-20250926195439645](F:\取证题\00_练习题_顺心借\服务器题目\image-20250926195439645.png)

13. 对服务器检材进行分析,后台管理员“xpt-0”所绑定的手机号码是?(答案格式:13001880188)

19521510863

![image-20250926201052383](F:\取证题\00_练习题_顺心借\服务器题目\image-20250926201052383.png)

14. 对服务器检材进行分析,用户首次借款初始额度是?(填写数字,答案格式:1)

4000

![image-20250926201453144](F:\取证题\00_练习题_顺心借\服务器题目\image-20250926201453144.png)

15. 对服务器检材进行分析,受害者在平台中一共结款了几次?(填写数字,答案格式:1)

1857

![image-20250928162236802](https://gitee.com/saga131/mypic/raw/master/img/image-20250928162236802.png)

搭建网站

上半部分是我绕弯的历程,成功复现部分在下半边

![image-20250926202659649](F:\取证题\00_练习题_顺心借\服务器题目\image-20250926202659649.png)

data虚拟机有固定的ip 192.168.160.150

然后在虚拟网络编辑器中新建一个VMnet,设置为仅主机,子网ip设置为192.168.160.0,DHCP设置从192.168.160.150开始到255结束

然后两个虚拟机都用这个VMnet,data虚拟机用命令systemctl restart network重启一下网卡,然后ip a查看一下修改后的ip

![image-20250926203622653](F:\取证题\00_练习题_顺心借\服务器题目\image-20250926203622653.png)

主机分别ping一下
![image-20250926204657194](F:\取证题\00_练习题_顺心借\服务器题目\image-20250926204657194.png)

然后重置一下data虚拟机中docker容器f2 中的mysql的密码

docker mysql8.0绕密
docker exec -it f29ed5271c46 sed -i '/\[mysqld\]/a skip-grant-tables' /etc/my.cnf
  • 作用:在MySQL配置文件的[mysqld]段落下添加skip-grant-tables
  • 效果:让MySQL启动时跳过权限验证,无需密码即可登录

![image-20250928144354721](https://gitee.com/saga131/mypic/raw/master/img/image-20250928144354721.png)

如果显示这个

systemctl start docker
docker restart f29ed5271c46
  • 作用:重启Docker容器使配置生效

无密码登录docker容器中的mysql

docker exec -it f29ed5271c46 mysql -uroot

mysql命令

刷新权限

FLUSH PRIVILEGES;

进入mysql数据库(存放密码的user表在mysql数据库中)

use mysql;

修改root密码(同时修改了远程连接的账号密码)

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
ALTER USER 'root'@'%' IDENTIFIED BY '123456';

刷新权限并退出

FLUSH PRIVILEGES;
exit;

把一开始的skip-grant-tables配置移除,恢复正常权限登录

docker exec -it f2 sed -i '/skip-grant-tables/d' /etc/my.cnf
docker restart f2

其中的f29ed5271c46是docker容器id

修改管理员登录限制

docker exec -it f2 mysql -uroot -p
123456
UPDATE sxj_prod.sys_user SET state = 0 WHERE id = 23; 

需要对历史命令记录查看,在system的虚拟机将所需要的软件启动

![image-20250926214735784](F:\取证题\00_练习题_顺心借\服务器题目\image-20250926214735784.png)

建议将源文件导出,用记事本查看,这样比筛选出来的更好,因为能看到不包括关键词的命令

![image-20250926215016852](F:\取证题\00_练习题_顺心借\服务器题目\image-20250926215016852.png)

启动consul(consul.sh)与rabbitmq

./consul.sh

rabbitmq 启动需要修改data虚拟机的host文件

vi /etc/hosts

删除 172.20.148.2 那一行,添加192.168.160.159 iZbp1gma2uf9hvsnbu9mdkZ

正确的host文件应该为

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.160.159 iZbp1gma2uf9hvsnbu9mdkZ

然后重启rabbitmq

systemctl restart rabbitmq-server

接下来重启jar包

![image-20250926215329523](F:\取证题\00_练习题_顺心借\服务器题目\image-20250926215329523.png)

cd /
java -jar /data/cal-0.0.1-SNAPSHOT.jar

或者

nohup java -jar -Xms4096M -Xmx4096M -Xmn3072M -Xss1M -XX:PermSize=256M -XX:MaxPermSize=256M /data/cal-0.0.1-SNAPSHOT.jar &

下面这个不会占用命令行窗口,但是看不到报错信息

反向代理

find ./ -type f -exec sed -i 's/47.96.140.186/192.168.160.159/g' {} +

其中的192.168.160.152需要换成system具体分到的ip

![image-20250926215823361](F:\取证题\00_练习题_顺心借\服务器题目\image-20250926215823361.png)

我是159

然后在同一目录下,修改一下,因为登录是需要手机验证码的

redis-cli -a Sxy000**
set ADMIN-PHONE18888888888 666666 

然后修改数据库中用户的状态(state 0表示未禁用)

在data虚拟机

docker exec -it f2 mysql -uroot -p123456
SHOW DATABASES;
use sxj_prod;
show tables;
desc sys_user;
select * from sys_user;
UPDATE sys_user SET state = 0 WHERE state = 1;

忘记改数据库配置了。。。(明天来)

数据库在jar包里面,在一个临时文件夹解压

cd temp_dir
jar -xf ../cal-0.0.1-SNAPSHOT.jar

![image-20250927183025219](https://gitee.com/saga131/mypic/raw/master/img/image-20250927183025219.png)

修改ip

寻找47.96.140.186,改成system服务器的ip 我的是192.168.160.159

另一个同名本地文件也改

![image-20250927183328695](https://gitee.com/saga131/mypic/raw/master/img/image-20250927183328695.png)

改好重新打包为jar

jar -cfM0 cal-0.0.1-SNAPSHOT.jar ./

然后覆盖

重启一下java jar

还需要将yaml文件里面的连接url修改

![image-20250927185926343](https://gitee.com/saga131/mypic/raw/master/img/image-20250927185926343.png)

spring.datasource.url=jdbc:mysql://rm-bp18td28bsh13f5jy.mysql.rds.aliyuncs.com:3306/数据库名

改为

spring.datasource.url=jdbc:mysql://192.168.160.159:3306/数据库名

同时还需要将下面的账号密码改为之前绕过mysql所设的root和123456

好像ip搞错了

重新开始配吧,要记住每台虚拟机的ip (同学,复现从这里开始跟着)

看这篇来复现
2024数证杯电子数据取证分析大赛初赛 服务器部分 Writeup | ZhangZ-Blog
多找找文章,搜数证杯初赛服务器

data.E01

ip: 192.168.160.150

作用:docker上有mysql的数据库

![image-20250927212151186](https://gitee.com/saga131/mypic/raw/master/img/image-20250927212151186.png)

system.E01

ip:192.168.160.159

作用:有java,网站jar包(里面存有sxj的配置yaml文件application-sxj.yaml),consul,redis(消息转发,也就是发短信验证码,并存储比对的软件)

![image-20250927212138308](https://gitee.com/saga131/mypic/raw/master/img/image-20250927212138308.png)

连上data.E01的docker容器mysql的数据库

ip:192.168.160.150

看一下主机是否能ping通

绕过Mysql的账密,步骤在上面,需要额外添加一个账号,后面要把阿里云的链接改为连data.E01的数据库,所以要在这新建一个账号

CREATE USER 'sxy'@'%' IDENTIFIED WITH mysql_native_password BY 'Sxy000**';  

GRANT ALL PRIVILEGES ON sxj_prod.* TO 'sxy'@'%';

用Navicat连接

![image-20250928150528347](https://gitee.com/saga131/mypic/raw/master/img/image-20250928150528347.png)

需要将sxy的plugin改为mysql_native_password

接下来换虚拟机 system.E01

因为配置文件中连的是阿里云的数据库

![image-20250928153332161](https://gitee.com/saga131/mypic/raw/master/img/image-20250928153332161.png)

需要将ip改为data.E01的ip,下面的账号密码填在上面的data容器数据库中

vim /etc/hosts

可以看到初始是

![2](https://gitee.com/saga131/mypic/raw/master/img/image-20250928154047540.png)

改为

data.E01的ip rm-bp18td28bsh13f5jy.mysql.rds.aliyuncs.com

验证一下

ping rm-bp18td28bsh13f5jy.mysql.rds.aliyuncs.com

![image-20250928154256021](https://gitee.com/saga131/mypic/raw/master/img/image-20250928154256021.png)

还需要将本地127改为127.0.0.1 iZbp1gma2uf9hvsnbu9mdkZiZbp1gma2uf9hvsnbu9mdkZ

然后我们去Navicat,启用一个手机号,sxj_prod的sys_user

![image-20250928154501372](https://gitee.com/saga131/mypic/raw/master/img/image-20250928154501372.png)

0为启用,1为禁止

还是在system.E01中,做启动rabbitmq前期准备工作

将/www/admin中所有的47.96.140.186变成我们system.E01的ip

find /www/admin -type f -name "*.js" -exec sed -i 's/47.96.140.186/system.E01的ip/g' {} +

启动两个

/root/consul.sh
/data/jar.sh

![image-20250928155305955](https://gitee.com/saga131/mypic/raw/master/img/image-20250928155305955.png)

发现
![image-20250928155400961](https://gitee.com/saga131/mypic/raw/master/img/image-20250928155400961.png)

应该是没开jar包

java -jar /data/cal-0.0.1-SNAPSHOT.jar

登录上网站

http://192.168.160.159:82/

仍然在system.E01

发送短信验证码

redis-cli -a Sxy000**
# 验证码是1234
set ADMIN-PHONE18888888888 1234
EXPIRE ADMIN-PHONE18888888888 600

![image-20250928163441193](https://gitee.com/saga131/mypic/raw/master/img/image-20250928163441193.png)

登入上

但是说xpt-1被禁用,对照了一下是这个手机号

![image-20250928160513468](https://gitee.com/saga131/mypic/raw/master/img/image-20250928160513468.png)

前面修改改错了,应该改的是state,不是type

![image-20250928160652420](https://gitee.com/saga131/mypic/raw/master/img/image-20250928160652420.png)

登入上

![image-20250928160710217](https://gitee.com/saga131/mypic/raw/master/img/image-20250928160710217.png)

16. 对服务器检材进行分析,该平台中所有下单用户成功完成订单总金额是?(填写数字,答案格式:1)

11408100

![image-20250928160846649](https://gitee.com/saga131/mypic/raw/master/img/image-20250928160846649.png)

有师傅的文章写的是11066700,我也不知道为什么显示错误

有可能是因为登录的手机号不同吗

登录了13238424249账号,也是显示11408100,假设错误。

![image-20250928164634322](https://gitee.com/saga131/mypic/raw/master/img/image-20250928164634322.png)

更换了浏览器也是这个数

![image-20250928164921770](https://gitee.com/saga131/mypic/raw/master/img/image-20250928164921770.png)

疑惑,希望有师傅能解答一下。

17. 对服务器检材进行分析,该平台中逾期费率是?(答案格式:1.1)

0.1

![image-20250928161344382](https://gitee.com/saga131/mypic/raw/master/img/image-20250928161344382.png)

18. 对服务器检材进行分析,该平台中累计还款总金额是?(填写数字,答案格式:1)

10194700

![image-20250928163644617](https://gitee.com/saga131/mypic/raw/master/img/image-20250928163644617.png)

19. 对服务器检材进行分析,该平台总共设置了多少种借款额度?(填写数字,答案格式:1)

18

![image-20250928164049317](https://gitee.com/saga131/mypic/raw/master/img/image-20250928164049317.png)

19 - 1,有一个被禁用了(操作显示“启用”)

20. 对服务器检材进行分析,该平台一共有多少个借款渠道?(填写数字,答案格式:1)

131

![image-20250928164228672](https://gitee.com/saga131/mypic/raw/master/img/image-20250928164228672.png)

在点击激活状态后,需要切换一下页面,数据才会从140更新到131

21. 对服务器检材进行分析,该平台对已完成用户收取了总计多少元服务费,结果精确到整数?(填写数字,答案格式:123)

4051915

![image-20250928164432748](https://gitee.com/saga131/mypic/raw/master/img/image-20250928164432748.png)

参考:
https://www.zhangz.cc/2024/11/22/488/index.html
https://ooqoww.top/2025/04/04/shuzhengbei
https://mp.weixin.qq.com/s/oxjD0tMKdfcl1SFTnjeYyA
排序不分前后,感谢前辈解疑答惑

最后修改:2025 年 09 月 28 日
很强的定力