前言:
统计了一下前两届的题型,数据分析和服务器都是必考且占比较大的,所以强化一下服务器部分的思路和熟练度以及数据分析的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 | private static final String[][] VALID_REQUIRED_ARGUMENTS = { |
接着执行命令即可
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 | SELECT SUBSTRING(address,1,2) province,AVG(income) avg_income |
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 | SELECT COUNT(*) AS total_users |
第二届盘古石初赛服务器
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都可以找到,用户名密码同上图
ssh连接上数据库
查看数据库中的表,可以看到一共有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 | cd backup |
恢复备份文件
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.php
、tmpbfuoa.php
、tmpbpbhw.php
和tmpbnyhp.php
查看一下几个后门的生成的时间
1 | cd /www/wwwroot/touzilicai.com |
根据时间对网站日志进行过滤
1 | cd /www/wwwlogs |
18.分析网站服务器检材,黑客通过哪个文件上传的木马文件:[答案格式:test.php] [★☆☆☆☆]
tmpugklv.php
con2.php
是一句话木马,直接在日志中搜索,根据上面D盾扫描的结果可以知道tmpugklv.php
是个文件上传
19.分析网站服务器检材,网站使用的数据库前缀是:[答案格式:test_] [★☆☆☆☆]
think_
20.分析网站服务器检材,木马文件的密码是:[答案格式:123] [★☆☆☆☆]
2335