前言
我有五不做
1.会做的我不做,因为学不到新东西
2.不会做的我不做我都不会做我怎么做
3.急的事我不做,急了容易出错
4.不急的事我不做,不急我做什么
5.不想做的我不做,我不想做我怎么做
感谢范老师的祖传txt (文末附)
范老师博客:yagami.vip
数证杯服务器部分
1. [填空题] 对服务器检材进行分析,站点服务器可能是从哪个云服务平台上调证过来的?(填写汉字,答案格式:亿速云) (2分)
阿里云
有阿里云相关进程
2. [填空题] 对服务器检材进行分析,站点服务器中数据库的密码是?(按实际值填写) (2分)
Sxy000**
查看/data/cal-0.0.1-SNAPSHOT.jar
配置文件application.yaml
发现激活配置文件是sxj
,因此查看application-sxj.yaml
得到数据库密码
3. [填空题] 对服务器检材进行分析,站点服务器用于提供服务发现的工具名是?(答案格式:zookeeper) (4分)
consul
主流的服务发现注册工具包括Consul、Zookeeper、Eureka、Etcd等,查看历史命令,在其中找到了Consul
4. [填空题] 对服务器检材进行分析,站点服务器数据库配置文件名是?(答案格式:database.php) (2分)
application-sxj.yaml
同第二题
5. [填空题] 对服务器检材进行分析,该网站涉及的APP名称是?(答案格式:微信) (2分)
顺心借
还是看配置文件
6. [填空题] 对服务器检材进行分析,该网站用于存储大量身份证照的OSS中的AccessKeyID后八位是?(答案格式:按实际值填写) (2分)
EuZJybzD
还是看配置文件
7. [填空题] 对服务器检材进行分析,站点服务器用于消息转发代理工具所使用的端口号是?(填写数字,答案格式:3306) (2分)
5672
RabbitMQ是实现了高级消息队列协议的开源消息代理软件
8. [填空题] 对服务器检材进行分析,站点服务器用于启动定时任务的代码片段存在于?(答案格式:LoginIndex.class) (4分)
MobileStatusTask.class
找cron
9. [填空题] 对服务器检材进行分析,站点服务器用于验证用户输入的验证码是否匹配的代码片段存在于?(答案格式:LoginIndex.class) (4分)
AdminIndexConller.class
使用AssertUtil.isTrue
方法判断是否相等
String redisCode = (String)this.stringRedisTemplate.opsForValue().get(RedisConstant.ADMIN_PHONE_CODE + dto.getMobile());
AssertUtil.isTrue(dto.getCode().equals(redisCode), ");
10. [填空题] 对服务器检材进行分析,数据库服务器中Docker容器镜像中mysql的镜像ID号前6位是?(答案格式:123asd) (2分)
23b013
首先仿真 data.E01,进去后记得修改ens33 ip /etc/sysconfig/network-scripts/ifcfg-ens33
。
然后启动docker查看就行
[root@localhost ~]# service docker start
Redirecting to /bin/systemctl start docker.service
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 8.0.39 23b013c7c67d 3 months ago 572MB
11. [填空题] 对服务器检材进行分析,数据库服务器中DockerCompose的版本号是?(答案格式:1.1.1) (2分)
2.27.1
[root@localhost ~]# find / -name 'docker-compose'
/usr/libexec/docker/cli-plugins/docker-compose
[root@localhost ~]# cd /usr/libexec/docker/cli-plugins
[root@localhost cli-plugins]# chmod +x docker-compose
[root@localhost cli-plugins]# ./docker-compose -v
Docker Compose version v2.27.1
12. [填空题] 对服务器检材进行分析,数据库服务器中用于存储后台登录账号的数据表名是?(答案格式:login) (2分)
sys_user
将下列内容写进mysql容器的/etc/my.cnf
中
[mysqld]
skip-grant-tables
然后重启容器
docker restart f29ed5271c46
登录mysql
docker exec -it f29ed5271c46 mysql -uroot
修改localhost
和所有主机
的root用户的密码,并刷新MySQL的权限
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
ALTER USER 'root'@'%' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;
因为在上面jar包中配置文件的用户是sxy
,为了能让网站连接上数据库,所以创建一个sxy
用户,并允许所有主机登录,其次授予sxj_prod
的权限
CREATE USER 'sxy'@'%' IDENTIFIED BY 'Sxy000**';
GRANT ALL PRIVILEGES ON sxj_prod.* TO 'sxy'@'%';
FLUSH PRIVILEGES;
然后把咱们上面的skip-grant-tables
去掉,并重启容器
docker exec -it f29ed5271c46 sed -i "s/skip-grant-tables/ /" /etc/my.cnf
docker restart f29ed5271c46
下一步连接上数据库,就得到了我们的答案
其次我们发现配置文件中的数据库地址是阿里云的,所以我们可以写一个hosts
将阿里云
的地址指向我们的data.E01
机子的ip
data.E01的ip rm-bp18td28bsh13f5jy.mysql.rds.aliyuncs.com
具体方法是将上面的内容加进system.E01
的/etc/hosts
,加完之后我们可以ping一下看合适没
[root@iZbp1gma2uf9hvsnbu9mdkZ ~]# ping rm-bp18td28bsh13f5jy.mysql.rds.aliyuncs.com
PING rm-bp18td28bsh13f5jy.mysql.rds.aliyuncs.com (192.168.71.150) 56(84) bytes of data.
64 bytes from rm-bp18td28bsh13f5jy.mysql.rds.aliyuncs.com (192.168.71.150): icmp_seq=1 ttl=64 time=0.267 ms
64 bytes from rm-bp18td28bsh13f5jy.mysql.rds.aliyuncs.com (192.168.71.150): icmp_seq=2 ttl=64 time=0.148 ms
64 bytes from rm-bp18td28bsh13f5jy.mysql.rds.aliyuncs.com (192.168.71.150): icmp_seq=3 ttl=64 time=0.219 ms
64 bytes from rm-bp18td28bsh13f5jy.mysql.rds.aliyuncs.com (192.168.71.150): icmp_seq=4 ttl=64 time=0.171 ms
查看数据库管理员表,我们可以看到很多state=1
说明没有启用,因此我们随机选一个启用
13. [填空题] 对服务器检材进行分析,后台管理员“xpt-0”所绑定的手机号码是?(答案格式:13001880188) (2分)
19521510863
数据库就可以看到
14. [填空题] 对服务器检材进行分析,用户首次借款初始额度是?(填写数字,答案格式:1) (2分)
4000
启动服务器之后,可以扫一下端口,看都有哪些服务
排查到82
可以看到我们的目标顺心借
我们在前台发送验证码,发现使用的ip是47.96.140.186
,因此需要替换/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' {} +
其次在启动rabbitmq
的时候发现启动失败,分析/var/lib/rabbitmq/erl_crash.dump
崩溃时间:Wed Nov 20 00:13:09 2024
崩溃原因:
Slogan: Kernel pid terminated (application_controller) ({application_start_failure,rabbitmq_prelaunch,{{shutdown,{failed_to_start_child,prelaunch,{epmd_error,"iZbp1gma2uf9hvsnbu9mdkZ",timeout}}},{rabbit_prelaunch_app,start,[normal,[]]}}表明Erlang节点由于rabbitmq_prelaunch应用程序启动失败而终止。具体错误是epmd(Erlang分布式编程的端口映射守护进程)启动超时。
可以看到解析iZbp1gma2uf9hvsnbu9mdkZ
超时,查看hosts文件,发现没有解析到127.0.0.1 进而修改
127.0.0.1 iZbp1gma2uf9hvsnbu9mdkZ iZbp1gma2uf9hvsnbu9mdkZ
修改后直接启动成功然后启动/root/consul.sh
和/data/jar.sh
,进入网页发送验证码给咱们启用的用户13238424249
在redis中写入这个用户的验证码,redis密码在配置文件中看
redis-cli -a Sxy000**
SET ADMIN-PHONE13238424249 1234
EXPIRE ADMIN-PHONE13238424249 600
验证码使用1234,成功登录
15. [填空题] 对服务器检材进行分析,受害者在平台中一共结款了几次?(填写数字,答案格式:1) (2分)
1857
16. [填空题] 对服务器检材进行分析,该平台中所有下单用户成功完成订单总金额是?(填写数字,答案格式:1) (2分)
11066700
17. [填空题] 对服务器检材进行分析,该平台中逾期费率是?(答案格式:1.1) (2分)
0.1
18. [填空题] 对服务器检材进行分析,该平台中累计还款总金额是?(填写数字,答案格式:1) (2分)
10194700
19. [填空题] 对服务器检材进行分析,该平台总共设置了多少种借款额度?(填写数字,答案格式:1) (2分)
18
19种有一个禁用了所以-1
20. [填空题] 对服务器检材进行分析,该平台一共有多少个借款渠道?(填写数字,答案格式:1) (2分)
131
要选择激活的
21. [填空题] 对服务器检材进行分析,该平台对已完成用户收取了总计多少元服务费,结果精确到整数?(填写数字,答案格式:123) (2分)
4051915
附:范老师祖传txt
服务器取证 解析 by yagami
本次阶段共 1 个段落, 21 个小题 , 总共 48 分
请根据服务器检材,回答以下问题: (21个小题, 共48分)
分别仿真system.E01和data.E01 是两台机器 data可以加多一块nat网卡就可以省去修改网卡配置的时间
1. [填空题] 对服务器检材进行分析,站点服务器可能是从哪个云服务平台上调证过来的?(填写汉字,答案格式:亿速云) (2分)
阿里云
system登录可以看到
Welcome to Alibaba Cloud Elastic Compute Service !
ls /etc/yum.repos.d/
可以看到AliYun.repo
里面内容也可以看到地址是mirrors.cloud.aliyuncs.com
2. [填空题] 对服务器检材进行分析,站点服务器中数据库的密码是?(按实际值填写) (2分)
Sxy000**
解压cal-0.0.1-SNAPSHOT.jar 或者使用jd-gui打开后查看
application.yaml中可以看到
profiles:
active: 'sxj'
查看application-sxj.yaml
datasource:
type: com.alibaba.druid.pool.DruidDataSource #
driver-class-name: com.mysql.cj.jdbc.Driver # mysqlcom.mysql.jdbc.Driver
url: jdbc:mysql://rm-bp18td28bsh13f5jy.mysql.rds.aliyuncs.com:3306/sxj_prod?allowMultiQueries=true&useUnicode=true&autoReconnect=true&useAffectedRows=true&useSSL=false&serverTimezone=Asia/Shanghai
username: sxy
password: Sxy000**
3. [填空题] 对服务器检材进行分析,站点服务器用于提供服务发现的工具名是?(答案格式:zookeeper) (4分)
consul
system.E01机器上执行history
可以看到
yum install consul
4. [填空题] 对服务器检材进行分析,站点服务器数据库配置文件名是?(答案格式:database.php) (2分)
application-sxj.yaml
同第二题
5. [填空题] 对服务器检材进行分析,该网站涉及的APP名称是?(答案格式:微信) (2分)
顺心借
同上题
app:
name:
user_name: 47892eff-bf47-430f-af4a-26d5992e2013
password: 2957aad5-0f29-4575-86c0-6504e5154ef4
6. [填空题] 对服务器检材进行分析,该网站用于存储大量身份证照的OSS中的AccessKeyID后八位是?(答案格式:按实际值填写) (2分)
EuZJybzD
同上题
oss:
endpoint: oss-cn-hangzhou.aliyuncs.com
accessKeyId: LTAI5tBt7rHreKjDEuZJybzD
accessKeySecret: WaNGaqgazB7pkg19lIEaBARODW8cl6
bucketName: sxj-cal
7. [填空题] 对服务器检材进行分析,站点服务器用于消息转发代理工具所使用的端口号是?(填写数字,答案格式:3306) (2分)
5672
同上题
rabbitmq:
host: localhost
port: 5672
username: root
password: 123456
8. [填空题] 对服务器检材进行分析,站点服务器用于启动定时任务的代码片段存在于?(答案格式:LoginIndex.class) (4分)
MobileStatusTask.class
查看com.rh.cal.task.MobileStatusTask
@Scheduled(cron = "0 * * * * ?")
public void scheduled() {
log.info("+ DateUtil.formatTime(new Date()));
try {
this.userService.uptInMobileStatus();
} catch (Exception e) {
log.error("{}", e);
}
}
}
9. [填空题] 对服务器检材进行分析,站点服务器用于验证用户输入的验证码是否匹配的代码片段存在于?(答案格式:LoginIndex.class) (4分)
AdminIndexConller.class
查看com.rh.cal.controller.admin.AdminIndexConller
String redisCode = (String)this.stringRedisTemplate.opsForValue().get(RedisConstant.ADMIN_PHONE_CODE + dto.getMobile());
AssertUtil.isTrue(dto.getCode().equals(redisCode), ");
10. [填空题] 对服务器检材进行分析,数据库服务器中Docker容器镜像中mysql的镜像ID号前6位是?(答案格式:123asd) (2分)
23b013
data.E01执行
service docker start
docker images --format "{{.ID}}" | cut -c 1-6
11. [填空题] 对服务器检材进行分析,数据库服务器中DockerCompose的版本号是?(答案格式:1.1.1) (2分)
2.27.1
data.E01执行
docker compose version --short
12. [填空题] 对服务器检材进行分析,数据库服务器中用于存储后台登录账号的数据表名是?(答案格式:login) (2分)
sys_user
data.E01执行
改密码
docker exec -it f2 sed -i '/[mysqld]/a skip-grant-tables' /etc/my.cnf
docker restart f2
docker exec -it f2 mysql -uroot
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
ALTER USER 'root'@'%' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;
CREATE USER 'sxy'@'%' IDENTIFIED BY 'Sxy000**';
GRANT ALL PRIVILEGES ON sxj_prod.* TO 'sxy'@'%';
FLUSH PRIVILEGES;
quit
docker exec -it f2 sed -i "s/skip-grant-tables/ /" /etc/my.cnf
docker restart f2
开启general.log
docker exec -it f2 mysql -uroot -p123456
set global general_log = ON;
set global general_log_file='/tmp/general.log';
启用管理员账号
UPDATE sxj_prod.sys_user SET state = 0 WHERE id = 23;
quit
docker exec -it f2 tail -f /tmp/general.log
连接mysql数据库后结合下题可以得出答案
13. [填空题] 对服务器检材进行分析,后台管理员“xpt-0”所绑定的手机号码是?(答案格式:13001880188) (2分)
19521510863
同上一题
SELECT phone FROM sys_user WHERE name='xpt-0';
14. [填空题] 对服务器检材进行分析,用户首次借款初始额度是?(填写数字,答案格式:1) (2分)
4000
system.E01机器执行
systemctl start rabbitmq-server
启动失败
可以下载 erl_crash.dump 分析服务器启动失败原因 (也可以仍给AI分析)
可以看到Slogan: Kernel pid terminated (application_controller) ({application_start_failure,rabbitmq_prelaunch,{{shutdown,{failed_to_start_child,prelaunch,{epmd_error,"iZbp1gma2uf9hvsnbu9mdkZ",address}}},{rabbit_prelaunch_app,start,[normal,[]]}}})
{epmd_error,"iZbp1gma2uf9hvsnbu9mdkZ",address}}}
主机名 iZbp1gma2uf9hvsnbu9mdkZ 可能没有正确解析,导致连接超时。
检查主机名配置,确保在 /etc/hosts 文件中将主机名映射到正确的本地 IP 地址。
sed -i 's/172.20.148.2/127.0.0.1/g' /etc/hosts
修改hosts文件把rm-bp18td28bsh13f5jy.mysql.rds.aliyuncs.com 指到data.E01虚拟机的ip
echo 192.168.91.172 rm-bp18td28bsh13f5jy.mysql.rds.aliyuncs.com >> /etc/hosts
结合nginx配置文件得出后台访问地址
浏览器访问 http://192.168.91.174:82 system.E01虚拟机的ip
修改后台跳转地址也可以添加一块网卡设置ip为47.96.140.186.我这里修改前台跳转地址192.168.91.174改为你自己system.E01的虚拟机ip地址
cd /www/admin/ && find ./ -type f -name '*.js' -exec sed -i 's/47.96.140.186/192.168.91.174/g' {} +
开始启动服务
systemctl start rabbitmq-server
cd /root/ && ./consul.sh
cd /data && sh jar.sh
添加验证码
redis-cli -a Sxy000**
SET ADMIN-PHONE18888888888 1234
EXPIRE ADMIN-PHONE18888888888 600
redis这边键值得设定可以查看代码com.rh.cal.constant.RedisConstant
浏览器访问 http://192.168.91.174:82 使用手机号18888888888 验证码1234 登录后台
进入后台--系统管理--系统设置--用户初始额度
SELECT * FROM global_config WHERE config_id=11;
15. [填空题] 对服务器检材进行分析,受害者在平台中一共结款了几次?(填写数字,答案格式:1) (2分)
1857
首页总还款订单量
select count(order_id) num from order_from where status=5;
16. [填空题] 对服务器检材进行分析,该平台中所有下单用户成功完成订单总金额是?(填写数字,答案格式:1) (2分)
11066700
首页通过订单总金额
17. [填空题] 对服务器检材进行分析,该平台中逾期费率是?(答案格式:1.1) (2分)
0.1
进入后台--系统管理--系统设置--逾期费率
SELECT * FROM global_config WHERE config_id=14;
18. [填空题] 对服务器检材进行分析,该平台中累计还款总金额是?(填写数字,答案格式:1) (2分)
10194700
首页还款总金额
select FLOOR(sum(quota)) from order_from where status=5;
19. [填空题] 对服务器检材进行分析,该平台总共设置了多少种借款额度?(填写数字,答案格式:1) (2分)
18
费率管理--借款额度 19个。1个禁用
SELECT COUNT(*) FROM quota WHERE is_delete=0;
20. [填空题] 对服务器检材进行分析,该平台一共有多少个借款渠道?(填写数字,答案格式:1) (2分)
131
渠道总共140个 开启状态131个
SELECT COUNT(*) FROM channel_data WHERE status=1;
21. [填空题] 对服务器检材进行分析,该平台对已完成用户收取了总计多少元服务费,结果精确到整数?(填写数字,答案格式:123) (2分)
4051915
交易统计
SELECT FLOOR(SUM(money)) FROM amount_bill WHERE type = 3;
原文始发于微信公众号(电子取证wiki):“数证杯”电子数据取证分析大赛 服务器部分Writeup
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论