0%

服务器取证及数据分析专项训练

前言:

统计了一下前两届的题型,数据分析和服务器都是必考且占比较大的,所以强化一下服务器部分的思路和熟练度以及数据分析的sql查询,备赛25盘古石决赛。

24数证杯决赛个人赛服务器

服务器重构

直接火眼仿真即可(快照备份一下)

查看ssh服务

ssh运行着,但是没有看到端口,直接连接也不行说明端口不是默认

提权到root查看,这里要注意由于admin用户没有被添加到sudoers文件,所以这里没法用sudo提权

提权到root后再次查看ssh,可以看到端口为16022

连接ssh

1. 重建完整的系统后,redis对外暴露的端口号是多少?(答案格式:数字) (3.0分)

16379

一般都是用docker启redis服务,直接查看docker容器

2.请找出加密mysql数据库连接密码所用的加密密钥(盐值)?(答案格式:注意大小写) (3.0分)

F*DZ-kZMs5qt

上面容器列表可以看到8080端口应该是一个网站,访问看看

并且发现还有一个jdk服务,那么就可以确定前端是一个nginx服务而后端是java服务

那么如果要看数据库连接密码正常是在后端查看

查看jdk服务的运行命令,找到配置文件的位置

1
docker inspect --format='{{.Config.Cmd}}' 79d2dfa52a5e

跟进过去,目录下可以看到上面命令中的yml文件(配置文件)和jar文件,将其全部导出

在配置文件中可以看到密码确实被加密了,但是这里还不知道加密的方式是什么

用jadx(或jd-gui)打开jar,重点查看编译文件中zwz目录下的文件,最后在/classes/cn.zwz/data/utils/ZwzStringUtils.class中找到加密的逻辑,可以看到是jasypt加密,加密密钥为F*DZ-kZMs5qt(看别人wp说直接根据加密密码后的结果得知jasypt加密,然后根据jasypt加密进行搜索跟进,但是我自己是想不到这个并且按这种方式找我也没找到。。。)

3. 请分析得出相亲网站的后台数据库中哪张表存放了会员相关信息,写出表名? (6.0分)

a_member_st

上一题得到密钥和加密方式后,从jar包中导出jasypt-1.9.3.jar

jasypt-1.9.3.jar进行分析一下

全局搜索含有decrypt的类名,发现就只有一个

跟进查看

整理一下常量可知,必须有input(加密字符串)和password(密钥),其余的都是可选可不选

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private static final String[][] VALID_REQUIRED_ARGUMENTS = {
new String[]{"input"},
new String[]{"password"}
};

private static final String[][] VALID_OPTIONAL_ARGUMENTS = {
new String[]{"verbose"},
new String[]{"algorithm"},
new String[]{"keyObtentionIterations"},
new String[]{"saltGeneratorClassName"},
new String[]{"providerName"},
new String[]{"providerClassName"},
new String[]{"stringOutputType"},
new String[]{"ivGeneratorClassName"}
};

接着执行命令即可

1
java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input="ij+NuXpx6CZwYB1oGHA2M2E2na0G8Tux" password="F*DZ-kZMs5qt" algorithm="PBEWithMD5AndDES"

得到密码mA0:xA0^,连接3306端口的数据库(注意这里的url是docker容器分配的,所以先连接ssh再连接数据库)

但是这个数据库连上后并没有存放会员相关信息的表,换19030端口的数据库连接试试

一样先解密

1
java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input="064l9Wwf9KjXlSz0phcwvg+R5xwzCNl7" password="F*DZ-kZMs5qt" algorithm="PBEWithMD5AndDES"

得到密码kidsk&klf^rv后连接19030端口数据库

进入后查看,找到一个可能是的表但是并不能确认

回到源码中搜索该表

跟进查看,可以确认这个表就是存放会员相关信息的表

4.已知用户在系统中的所有操作都会被记录,请找出用户在“查询角色”时,其请求的后端路径地址为?(格式:/api/query/…) (3.0分)

/zwz/role/getAllByPage

前面3306的数据库中有一个a_log表有记录(注意不要跟查询全部角色和查询用户混了)

5. 请分析得出数据库用户表中status为-1状态值的含义为?(格式:学生) (1.0分)

禁用

在源码中直接搜索status就可以搜到了(只是找的时候要花点时间,数量有点多)

6.请统计平均月均收入第二高的省份(省份包含三大类:省、直辖市、自治区)(答案格式:请写出完整的省份名(或直辖市名、自治区名),如江西省、天津市、西藏自治区) (3.0分)

内蒙

1
2
3
4
SELECT SUBSTRING(address,1,2) province,AVG(income) avg_income 
FROM a_member_st
GROUP BY province
ORDER BY avg_income DESC

24数证杯决赛个人赛数据分析

1.分析数据库检材,该数据库中会员姓名包含“强”字的会员数量为多少?(答案格式:纯数字) (1.0分)

2945

直接导入到网钜里面分析

导入到navicat分析(这里联网到云服务器,如果断网就导入本地,或者导入数据库取证工具)

1
SELECT COUNT(*) FROM member WHERE userName LIKE '%强%'

2. 属于会员id“89378”的直接下级用户数为多少?(答案格式:纯数字) (1.0分)

11

直接筛选parentId为89378的用户

用navicat查询

1
SELECT COUNT(*) FROM member WHERE parentId = 89378

3. 请计算每名会员的总返佣金额,写出总返佣金额最大的会员id;(答案格式:纯数字) (3.0分)

87314

这题用网钜并不好做,直接上sql语句

1
SELECT userId,SUM(newBlance-oldBlance) as `佣金` FROM salary GROUP BY userId ORDER BY `佣金` DESC

4.计算在2023年5月1日到2024年5月30日之间(包含5月1日和5月30日),总提现金额大于1000的用户数量;(答案格式:纯数字) (5.0分)

11756

先转化一下时间戳

然后进行聚合

然后再筛选时间范围内的

再进行聚合

最后筛选大于1000的数量

用navicat查询

1
2
3
4
5
6
7
8
9
SELECT COUNT(*) AS total_users
FROM (
SELECT userId
FROM withdraw
WHERE FROM_UNIXTIME(creationTime/1000, '%Y-%m-%d') >= '2023-05-01'
AND FROM_UNIXTIME(creationTime/1000, '%Y-%m-%d') <= '2024-05-30'
GROUP BY userId
HAVING SUM(withdrawAmount) > 1000
) AS subquery;

第二届盘古石初赛服务器

IM服务器重构

直接仿真即可

查看ssh状态

连接ssh

WEB服务器重构

直接仿真

查看ssh服务

ssh运行中,连接ssh

WEB服务器网站重构

通过火眼分析发现网站由宝塔管理

直接查看面板信息

1
bt 14

修改密码

1
bt 5

登录宝塔面板,但是发现报错了

后面我发现我网络连接不是桥接模式,所以会导致这个报错(我还以为是hosts或者dns的问题)

将网络改成桥接模式,然后就可以正常访问了

查看网站,但是此时还不能用域名访问

修改hosts绑定域名

此时就可以访问网站了

1.分析内部IM服务器检材,在搭建的内部即时通讯平台中,客户端与服务器的通讯端口是:[答案格式:8888] [★☆☆☆☆]

8065

查看docker容器

搜索一下即可知道这个是通讯平台

2.分析内部IM服务器检材,该内部IM平台使用的数据库版本是: [答案格式:12.34] [★★☆☆☆]

12.18

查看容器详情信息,可以看到数据库为postgresql,版本为12.18

1
docker inspect 64

3.分析内部IM服务器检材,该内部IM平台中数据库的名称是:[答案格式:小写] [★★☆☆☆]

mattermost_test

同上图

4.分析内部IM服务器检材,该内部IM平台中当前数据库一共有多少张表:[答案格式:1] [★★☆☆☆]

82

端口和ip都可以找到,用户名密码同上图

 2025-06-03 234000.png

ssh连接上数据库

 2025-06-03 234143.png

查看数据库中的表,可以看到一共有82张表

5.分析内部IM服务器检材,员工注册的邀请链接中,邀请码是:[答案格式:小写数字字母] [★★★☆☆]

54d916mu6p858bbyz8f88rmbmc

进入数据库中查看,在users表可以看到用户信息

bcrypt加密伪造密码替换

替换后登录后台

改语言为中文

发现当前用户并不是管理员用户,管理员是gxyt

修改gxyt的密码为123456登录,查看团队设置可以看到邀请码

6.分析内部IM服务器检材,用户yiyan一共给fujiya发送了几个视频文件:[答案格式:数字] [★★★☆☆]

2

修改yiyan用户的密码为123456登录,查看与fujiya的聊天记录可以看到发送了2个

7.分析内部IM服务器检材,用户yiyan在团队群组中发送的视频文件的MD5值是:[答案格式:小写] [★★★☆☆]

f8adb03a25be0be1ce39955afc3937f7

找到yiyan发送在群里的视频

导出视频查看md5值

8.分析内部IM服务器检材,一个团队中允许的最大用户数是:[答案格式:数字] [★★★★☆]

50

重新登录gxyt用户,前往系统控制台查看站点配置

9.分析内部IM服务器检材,黑客是什么时候开始攻击:[答案格式:2024-01-01-04-05] [★★★☆☆]

2024-04-25-07-33

在系统控制台查看服务器日志,分析可知黑客对服务器进行密码爆破

10.分析网站服务器检材,网站搭建使用的服务器管理软件当前版本是否支持32位系统:[答案格式:是/否] [★☆☆☆☆]

查看install.sh,可以看到不支持

11.分析网站服务器检材,数据库备份的频率是一周多少次:[答案格式:1] [★★☆☆☆]

1

查看当前用户的定时任务,可以看到备份数据库是在每周日午夜进行一次

1
crontab -l

12.分析网站服务器检材,数据库备份生成的文件的密码是:[答案格式:admin] [★★☆☆☆]

IvPGP/8vfTLtzQfJTmQhYg==

查看backup.sh,可以看到将备份文件压缩并用 AES 加密,并且会删除数据库

这里可以修改一下代码,删除mysqladmin -u $DB_USER -p$DB_PASSWORD drop $DB_NAME --force

运行以下代码生成密码

1
echo -n 2828 | openssl enc -aes-256-cbc -a -salt -pass pass:mysecretpassword -nosalt

13.分析网站服务器检材,网站前台首页的网站标题是:[答案格式:百度] [★★★☆☆]

威尼斯

访问网站即可看到

14.分析网站服务器检材,受害人第一次成功登录网站的时间是:[答案格式:2024-01-01-04-05] [★★★☆☆]

2024-04-25-09-49

宝塔面板可以查看数据库信息,连接数据库

但是进入后查看发现是空的,这是因为上面backup.sh中备份完数据库后删除数据库的原因

找到备份的数据库,查看备份文件,可以看到备份文件为2828_20240427154000.sql(没啥用的一步,自己分析的玩玩)

1
2
3
4
cd backup
openssl des3 -d -k IvPGP/8vfTLtzQfJTmQhYg== -in 2828.sql.gz -out ./1.sql.gz
gunzip 1.sql.gz
cat 1.sql

恢复备份文件

1
openssl des3 -d -k IvPGP/8vfTLtzQfJTmQhYg== -in 2828.sql.gz | tar -xzf -

导出后,导入数据库中(注意这里要先创建完2828数据库再导入sql文件)

在think_admin表中可以看到admin用户的信息,密码一眼123456的md5加密

将网站源码导出分析,可以看到后台登录地址为Admin/Login/index,密码加密逻辑就为md5

登录后台,但是这里发现登不上,查看一下数据库的配置文件发现用户名和密码不对,改成2828用户

但是此时登录又发现安全码不对(原本是随便乱输的),将验证安全码的逻辑给注释

此时再重新登录就成功了

受害人为zhiwanjing(我只做服务器所以我也不清楚这个怎么来的)

15.分析网站服务器检材,前台页面中,港澳数字竞猜游戏中,进入贵宾厅最低点数是:[答案格式:1234] [★★★☆☆]

100000

随便找个账号登录,用户密码menkou/123456

进入后点击进入贵宾厅就可以看到了

16.分析网站服务器检材,受害人在平台一共盈利了多少钱:[答案格式:12] [★★☆☆☆]

35000

17.分析网站服务器检材,网站根目录下,哪个路径存在漏洞:[答案格式:/Admin/User/register.php] [★★★☆☆]

/Home/User/tkpwdpost.html

先用D盾做一个简单的查杀

跟进查看根目录下的文件,确定四个后门con2.phptmpbfuoa.phptmpbpbhw.phptmpbnyhp.php

查看一下几个后门的生成的时间

1
2
cd /www/wwwroot/touzilicai.com
ls -ahl

根据时间对网站日志进行过滤

1
2
cd /www/wwwlogs
cat touzilicai.com.log | grep "25/Apr/2024:18:51"

18.分析网站服务器检材,黑客通过哪个文件上传的木马文件:[答案格式:test.php] [★☆☆☆☆]

tmpugklv.php

con2.php是一句话木马,直接在日志中搜索,根据上面D盾扫描的结果可以知道tmpugklv.php是个文件上传

19.分析网站服务器检材,网站使用的数据库前缀是:[答案格式:test_] [★☆☆☆☆]

think_

20.分析网站服务器检材,木马文件的密码是:[答案格式:123] [★☆☆☆☆]

2335