第四届长安杯复盘(服务器、计算机部分)

前言

之前一直没有写博客的习惯,想着还是写一些吧,算是加强一下印象。时隔一年,再次回顾一下去年长安杯的题目,单就服务器和计算机部分来说,较去年同时期是有显著的进步的,但真正把这道题吃透,还远说不上。做题的过程中还是太糙了,低级错误犯了不少,最后参考了一下几位大佬的博客,才算把这篇wp勉强完成。不过时隔一年再去看同一道题,眼界广了,收获也就不一样了

案情简介

某地警方接到受害人报案称其在某虚拟币交易网站遭遇诈骗,该 网站号称使用“USTD 币”购买所谓的“HT 币”,受害人充值后不但“HT 币”无法提现、交易,而且手机还被恶意软件锁定勒索。警方根据受害 人提供的虚拟币交易网站调取了对应的服务器镜像并对案件展开侦查。
容器密码:2022.4th.changancup!

先说思路

现在回看整套题的思路其实比较清晰了——jar包类型的网站重构,检材一存放网站源代码,检材三存放docker配置的数据库,pc检材提供线索。
整体思路是依照pc检材中的建站笔记,依次启动前后端服务,网站就可以顺利重构。

检材一

先看history,以下截取一部分
在这里插入图片描述可以看到检材一中进行了大量的npm run dev./start_web.sh
但是start_web.sh已经被删除了,不过可以推测网站的jar包启动顺序为

java -jar /web/app/market.jar 
java -jar /web/app/exchange.jar 
java -jar /web/app/admin-api.jar 
java -jar /web/app/ucenter-api.jar 

npm

npm run dev是用于搭建脚手架环境的命令,在使用之前需要先配置项目的package.json中
的script项

以/web/app/web下的package.json为例

"name": "bitrade",
    "version": "1.0.0",
    "description": "A Vue.js project",
    "author": "bear <220806216@qq.com>",
    "private": true,
    "scripts": {
        "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
        "start": "npm run dev",
        "unit": "jest --config test/unit/jest.conf.js --coverage",
        "e2e": "node test/e2e/runner.js",
        "test": "npm run unit && npm run e2e",
        "lint": "eslint --ext .js,.vue src test/unit/specs test/e2e/specs",
        "build": "node build/build.js"
    },

可以看到是一个vue项目,百度一下

DevServer是Webpack 3开放的一个实验功能,使用webpack-dev-middleware中间件,
提供热更新的开发服务器,旨在帮助开发者在开发阶段快速进行环境搭建。
–inline选项会为入口页面添加“热加载”功能,即代码改变后重新加载页面
–progress 查看 webpack 的编译进度
–config 配置文件的路径

一个快速搭建环境的命令,配置文件的路径在build/webpack.dev.conf.js

jar包
这几个jar包对应的是网站的不同功能,看名字猜也算比较好猜的
反编译admin-api.jar

在这里插入图片描述可以看到jar包的一些配置信息,数据库的链接地址是172.16.80.128:33050,数据库的账号密码;剩下的暂时也没有其他信息了

检材三

还是照例先看history
在这里插入图片描述看到有mysql、mongoDB、redis、zookeeper、docker、kafka

[root@localhost /]# mysql -uroot -p
-bash: mysql: command not found

本机没有MySQL服务,那应该是在docker里面

service docker start
docker ps
docker exec -it mysql57 /bin/bash

先进一波docker看一下,成功登录mysql但是发现b1数据库被删除了,结合在pc中发现的b1数据库表结构文件,应该是要还原

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |        
| mysql              |
| performance_schema |
| sys                |
+--------------------+

历史命令看到有docker-compose,追一下

root@localhost /]# cat /data/mysql/docker-compose.yml
version: '3'

services:
  mysql:
    image: "mysql:5.7.32"
    restart: always
    container_name: mysql57
    environment:
      MYSQL_ROOT_PASSWORD: shhl7001
      TZ: Asia/Shanghai
    command:
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
      --max_allowed_packet=128M
    ports:
      - 33050:3306
    volumes:
      - /data/mysql/db:/var/lib/mysql
      - /data/mysql/conf/my.cnf:/etc/mysql/my.cnf

service定义不同的引用服务,这里只有MySQL
可以看到MySQL的版本是5.7.32,docker的33050端口映射到了主机的3306端口,volumes的映射来自于/data/mysql/db/data/mysql/conf/my.cnf
到这一步就很清晰了,直接把表结构文件拖进去还原即可

当然这步其实有其他的解法

在自己做的时候,一开始没有注意到docker-compoese,直接把表结构文件down下来,扔到火眼数据库工具跑出sql文件再导入新建数据库也是可以的
在这里插入图片描述

网站重构

到这一步,前期的准备工作就基本完成了,接下来就是网站的重构
在这里插入图片描述
pc里有建站笔记,判断后端是jar包、检材三的数据库等服务以及/web/app/admin路径下的npm
pc里还发现了start_web.sh和start.sh两个脚本,查看脚本内容发现是梭哈服务的
在这里插入图片描述
在这里插入图片描述

接下来依次启动服务就可以了,但是不知道为什么验证码部分就是不显示,费解
在这里插入图片描述

做题部分

1. 检材1的SHA256值为

9E48BB2CAE5C1D93BAF572E3646D2ECD26080B70413DC7DC4131F88289F49E34

2. 分析检材1,搭建该服务器的技术员IP地址是多少?用该地址解压检材2

172.16.80.100

last命令跑一下

[root@localhost /]# last
root     pts/0        192.168.6.1      Tue Oct 17 21:58   still logged in   
root     tty1                          Tue Oct 17 21:58   still logged in   
reboot   system boot  3.10.0-862.el7.x Tue Oct 17 21:58 - 00:06  (02:08)    
root     pts/0        192.168.6.1      Tue Oct 17 21:16 - crash  (00:42)    
root     tty1                          Tue Oct 17 21:11 - 21:58  (00:46)    
reboot   system boot  3.10.0-862.el7.x Tue Oct 17 21:11 - 00:06  (02:55)    
reboot   system boot  3.10.0-862.el7.x Tue Oct 17 21:10 - 00:06  (02:55)    
root     pts/1        172.16.80.100    Wed Oct 19 23:09 - 23:31  (00:21)    
root     pts/0        172.16.80.100    Wed Oct 19 22:48 - 23:25  (00:37)    
root     pts/0        172.16.80.100    Wed Oct 19 02:38 - 04:56  (02:18)    
root     pts/0        172.16.80.100    Wed Oct 19 00:18 - 00:23  (00:05)    
root     pts/0        172.16.80.100    Tue Oct 18 04:45 - 04:52  (00:07)    
reboot   system boot  3.10.0-862.el7.x Tue Oct 18 04:44 - 00:06 (364+19:21) 
root     pts/0        172.16.80.100    Tue Oct 18 03:56 - crash  (00:48)    
reboot   system boot  3.10.0-862.el7.x Tue Oct 18 03:55 - 00:06 (364+20:10) 
root     pts/0        172.16.80.100    Tue Oct 18 03:30 - 03:55  (00:24)    
reboot   system boot  3.10.0-862.el7.x Tue Oct 18 03:15 - 03:55  (00:40)    

3. 检材1中,操作系统发行版本号为

CentOS 7.5.1804
[root@localhost /]# uname -a
Linux localhost.localdomain 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

4. 检材1系统中,网卡绑定的静态IP地址为

172.16.80.133

在这里插入图片描述
5. 检材1中,网站jar包所存放的目录是(答案为绝对路径,如“/home/honglian/”)

/web/app

6. 检材1中,监听7000端口的进程对应文件名为

cloud.jar

这道题在网站后端服务起了之后可以看,当然反编译jar包也行

[root@localhost /]# netstat -anpt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:9090            0.0.0.0:*               LISTEN      1825/node           
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      968/sshd            
tcp        0      0 0.0.0.0:3000            0.0.0.0:*               LISTEN      1826/node           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1213/master         
tcp        0      0 192.168.6.135:9090      192.168.6.1:14935       ESTABLISHED 1825/node           
tcp        0     36 192.168.6.135:22        192.168.6.1:13770       ESTABLISHED 1471/sshd: root@pts 
tcp        0      0 192.168.6.135:22        192.168.6.1:2421        ESTABLISHED 2118/sshd: root@not 
tcp6       0      0 :::3306                 :::*                    LISTEN      1135/mysqld         
tcp6       0      0 :::22                   :::*                    LISTEN      968/sshd            
tcp6       0      0 :::7000                 :::*                    LISTEN      1577/java           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1213/master         
tcp6       0      0 :::6010                 :::*                    LISTEN      1699/java           
tcp6       0      0 127.0.0.1:36174         127.0.0.1:7000          TIME_WAIT   -                   
tcp6       0      0 172.16.80.133:32880     172.16.80.128:33050     ESTABLISHED 1699/java           
tcp6       0      0 127.0.0.1:36100         127.0.0.1:7000          TIME_WAIT   -              
lsof -p 7000
##这里网络不知道怎么lsof yum不来了,不过应该是可以的

这里推荐一下Zodi4c佬的思路:把所有jar解压下来以后爆搜7000端口
7. 检材1中,网站管理后台页面对应的网络端口为(答案填写阿拉伯数字,如“100”)

9090

在这里插入图片描述发现问题了。。
源代码直接请求的是服务器原ip地址,而因为我是采用直接更改dhcp的方式分配ip,网站无法与数据库进行通信
而解决方法是使用虚拟网络编辑器分配子网并设置dhcp范围,然后再虚拟机中保持静态IP,这样既不会更改虚拟机ip也可以和虚拟机通讯

自我反省,基础知识不够扎实
不过这其实也算一个习惯问题,类似架构的集群采用的通信方式很有可能是和此类似的,以后配网需要保持好习惯

在这里插入图片描述解决
在这里插入图片描述

8. 检材1中,网站前台页面里给出的APK的下载地址是(答案格式如下:“https://www.forensix.cn/abc/def”)

https://pan.forensix.cn/f/c45ca511c7f2469090ad/?dl=1

在这里插入图片描述
在这里插入图片描述

9. 检材1中,网站管理后台页面调用的用户表(admin)里的密码字段加密方式为?

md5

在这里插入图片描述发个包看下请求,搜一下关键字
在这里插入图片描述

10. 分析检材1,网站管理后台登录密码加密算法中所使用的盐值是

XehGyeyrVgOV4P8Uf70REVpIw3iVNwNs
 password = Encrypt.MD5(password + this.md5Key);

this.md5Key就是salt,我们直接追一下

@Value("${bdtop.system.md5.key}")
  private String md5Key;

貌似是一个全局变量,application.properties里面记录了

bdtop.system.md5.key=XehGyeyrVgOV4P8Uf70REVpIw3iVNwNs

application.properties

Spring Boot工程的配置文件
具体参考https://www.cnblogs.com/lenve/p/10947517.html
https://blog.csdn.net/yhahaha_/article/details/88568121

11. 检材2中,windows账户Web King的登录密码是

135790

在这里插入图片描述
12. 检材2中,除检材1以外,还远程连接过哪个IP地址?并用该地址解压检材3

172.16.80.128

火眼ssh连接记录
在这里插入图片描述
13. 检材2中,powershell中输入的最后一条命令是

ipconfig

powershell可以直接查看历史命令
命令Get-history或者直接↑查看
在这里插入图片描述
14. 检材2中,下载的涉案网站源代码文件名为

ZTuoExchange_framework-master.zip

结合三个检材可以分析出来

在这里插入图片描述15. 检材2中,网站管理后台root账号的密码为

root

chrome保存的密码可以直接看到
在这里插入图片描述

16. 检材2中,技术员使用的WSL子系统发行版本是(答案格式如下:windows 10.1)

Ubuntu 20.04

命令wsl -l查看

17. 检材2中,运行的数据库服务版本号是(答案格式如下:10.1)

8.0.30

这道题我没注意审题,以为是检材三的数据库
在这里插入图片描述

18. 上述数据库debian-sys-maint用户的初始密码是

ZdQfi7vaXjHZs75M

查看/etc/mysql/debian.cnf查看内容,可以看到有这个mysql连接用户: [client] host = localhost user = debian-sys-maint password =

在这里插入图片描述
19.检材3服务器root账号的密码是

h123456

ssh历史命令里记录了
在这里插入图片描述20. 检材3中,监听33050端口的程序名(program name)为

docker-proxy

docker起来以后netstat -anpt

[root@localhost app]# netstat -anpt | grep 33050
tcp6       0      0 172.16.80.133:55322     172.16.80.128:33050     ESTABLISHED 2632/java 

21. 除MySQL外,该网站还依赖以下哪种数据库

MongoDB、redis

在这里插入图片描述
22. 检材3中,MySQL数据库root账号的密码是

shhl7001

同样是反编译以后配置文件查看spring.datasource.password=shhl7001

23. 检材3中,MySQL数据库在容器内部的数据目录为

/var/lib/mysql

划重点是容器内部,所以是volunms的位置
docker inspect mysql57查看,得到结果是

"Volumes": {
                "/etc/mysql/my.cnf": {},
                "/var/lib/mysql": {}
            },

24. 涉案网站调用的MySQL数据库名为

b1

可以看到spring.datasource.url=jdbc:mysql://172.16.80.128:33050/b1?characterEncoding=utf-8里访问的是b1数据库

25. 勒索者在数据库中修改了多少个用户的手机号?(答案填写阿拉伯数字,如“15”)

3

/data/msyql/db下有日志文件,查询一下
在这里插入图片描述
26. 勒索者在数据库中删除的用户数量为(答案填写阿拉伯数字,如“15”)

28

在这里插入图片描述
27. 还原被破坏的数据库,分析除技术员以外,还有哪个IP地址登录过管理后台网站?用该地址解压检材4

172.16.80.197

admin_access.log可以直接看,验证一下就行
在这里插入图片描述
28. 还原全部被删改数据,用户id为500的注册会员的HT币钱包地址为

cee631121c2ec9232f3a2f028ad5c89b

在这里插入图片描述
29. 还原全部被删改数据,共有多少名用户的会员等级为’LV3’(答案填写阿拉伯数字,如“15”)

158

网站起起来以后对照一下数据库,可以发现数据库的member_grade_id就是会员等级
在这里插入图片描述
sql查询一下
在这里插入图片描述
30. 还原全部被删改数据,哪些用户ID没有充值记录(答案填写阿拉伯数字,多个ID以逗号分隔,如“15,16,17”)

518

在这里插入图片描述
31. 还原全部被删改数据,2022年10月17日总计产生多少笔交易记录?(答案填写阿拉伯数字,如“15”)

1000

在这里插入图片描述
32. 还原全部被删改数据,该网站中充值的USDT总额为(答案填写阿拉伯数字,如“15”)

408228

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值