2022第四届长安杯电子取证竞赛 服务器赛时思路&题解 Zodi4c

2022 长安杯 服务器赛时做题思路备忘 Zodi4c

VC容器密码为:2022.4th.changancup!

我赛时的做题思路和关心老师的讲解基本一致,只是没了上帝视角,本人只开了服务器,所以案件的关联性方面会差点,专注于服务器本身,以及比赛时是如何思考的。

队伍分工为本人服务器,毛同学为PC+基础检材分析,刘同学为手机+apk+exe逆向

做多了比赛题,基本都是换汤不换药

一切恐惧都来源于火力不足,不是拿个轻薄本就能把比赛打好的
在这里插入图片描述
在这里插入图片描述

检材1

在这里插入图片描述

1. 检材1的SHA256值为

考点:基础取证
E48BB2CAE5C1D93BAF572E3646D2ECD26080B70413DC7DC4131F88289F49E34
在这里插入图片描述

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

考点:基础取证
172.16.80.100
关键词 搭建 技术员
要搭建应该要远程连进来才能运维,查看登录日志,对检材2进行解压,解压成功,验证前面猜想
在这里插入图片描述

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

考点:基础取证
在这里插入图片描述
在这里插入图片描述

[root@localhost app]# cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core)

熟悉命令和工具,工具取不出来就搜索用命令

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

考点:基础取证
在这里插入图片描述
在这里插入图片描述

[root@localhost app]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=172.16.80.133
NETMASK=255.255.255.0
GATEWAY=172.16.80.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=a51d1d55-06ed-4c61-9cf8-4a71bc1010b2
DEVICE=ens33
ONBOOT=yes

这条命令很常用,建议全文背诵

好,我们在这里发现这个服务器起的是静态IP,且是172网段的,我在等待发解压密码的时候已经把所有题目看过了,是一个java站,没怎么遇到过,可能会有点麻烦,IP什么配置起来可能不方便,所以这里不选择把static修改成dhcp的方式,而是选择使用修改虚拟网络编辑器的方式来配置,直接配置虚拟机的网段,使服务器的IP落在虚拟网络编辑器配置的虚拟网段内,来实现远程工具的连接。
在这里插入图片描述

先配置子网,再配置dhcp范围
在这里插入图片描述
点击确定即生效,xshell即可连接

5. 检材1中,网站jar包所存放的目录是(答案为绝对路径,如“/home/honglian/”)

考点:历史记录history
/web/app

查看历史记录,有1000多条,我先从上到下概览了一遍
在这里插入图片描述
有很多重复的wget,第一遍是下载安装包没问题,多次重复可能是在更新包,后面可能要注意看是否有备份包需要还原

在这里插入图片描述
既然是java站,运行网站就是运行.jar,那么对.jar过滤一遍先,看看到底有几个jar包,做了哪些操作

在这里插入图片描述
对history通览一遍后发现有很多启动语句,从下向上找最后一次看起来最多最完整的启动语句,先记录一下,稍后重构的时候应该会用到

此时也可以清晰的看到网站运行都是在/web/app这个目录下的

查看一下该目录
在这里插入图片描述
里面共有5个jar包和2个tar包及tar包解压出来的文件夹

本题答案找到了但是对于整个服务器的重构,本题的使命还没有结束

看完这一段语句后继续往下看,明显看到是有启动脚本的,我很兴奋,觉得这个服务器应该就到这里了


一搜心凉半截,没有这个脚本,可能真的需要手动启动这几个服务,手动起就会有一个问题就是启动脚本后面可能需要加许多参数,我们设置不好这个参数
到这里历史记录基本上算是看完了

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

考点:网站配置文件(这里是java站,多了一个解jar包的过程)、网站结构、关联分析
cloud.jar
程序要想要起一个端口,肯定要声明我要这个端口,所以在某处一定会有记录的,程序员为了程序的可用和可移植性,会把很多经常需要修改的参数放到一起,那就是配置文件。所以在这里要找这个声明端口,最有可能是在网站的配置文件里,其次就是源码system这类系统类文件的某处。

我因为平时看各类取证文章比较多,像安全村、取证实录、龙信的格物刊,也关注服务器取证的各类技术。所以对这类站点还是有一定了解的。

直接将5个包用zip方式解压,对其中文件进行检查,在BOOT-INF\classes处发现application.properties这一配置文件
在这里插入图片描述
对这五个配置文件进行检查,发现7000端口在cloud.jar中被声明
在这里插入图片描述
通过找端口的过程,我们对网站结构和配置文件的结构有了一定的了解,同时也看到数据库配置等其他信息

这是很关键的一个东西,在这里留一个心眼,后面多少会用到数据库

此时逆向的队友很急,因为没开出检材4 的密码,需要检材3先做,他们说检材3还需要修复数据库,可能有点麻烦,我看了一下检材3,基本是数据库的题,加上配置文件里连接了很多数据库,像mysql,redis,mongodb这些,而且连接的也不是本机,所以很可能检材3是数据库服务器。此时其实同时我已经在使用命令启动检材1里的服务了。有很多报错,这是肯定的,肯定是数据库这些没连好。也是与此同时,做PC队友问我是不是有两个IP,一个是80.128,一个是80.133,我一看对的,80.133正是现在做的这个服务器,80.128是一个配置文件里的数据库连接的服务器,我反问,128是不是数据库,答曰不知道。

133是当前服务器,也存在mysql,尝试使用配置文件中mysql 的账号密码登录本机的mysql,密码错误

我觉得很可能128就是另一个数据库服务器,但是配置文件里又存在很多192开头的数据库链接地址,但是其他配置都是一样的,这让我很疑惑

马上分析另一个服务器检材三,弘联取证软件无法分析,遂直接仿真,取证大师分析,分析成功。

检材三预分析

查看历史命令

发现有docker

mongodb和redis

kafka

zookeeper
一般这种启动命令找最后几条,找长的准没错
攒一波启动命令
在这里插入图片描述
查看网络配置,也是静态的,IP为172.16.80.128
在这里插入图片描述

[root@localhost b1]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=172.16.80.128
NETMASK=255.255.255.0
GATEWAY=172.16.80.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=a51d1d55-06ed-4c61-9cf8-4a71bc1010b2
DEVICE=ens33
ONBOOT=yes

其他都还是其次,现在我想做的就是验证检材3这个服务器是否就是检材1中jar包连接的数据库服务器,现在已知mysql在docker中,因为本机没有mysql

[root@localhost b1]# mysql
-bash: mysql: command not found

起docker,查看数据库
在这里插入图片描述
比赛时比较紧张,这里我直接启动了,没有注意到docker-compose,也能做,不太影响

发现docker里的3306映射到主机的33050端口,端口对上了,进docker,使用jar包配置文件中的密码登录,登陆成功,现在基本确定这个检材3数据库就是为检材1提供服务的
在这里插入图片描述

[root@localhost b1]# docker exec -it 8e /bin/bash
root@8eda4cb0b452:/# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.32-log MySQL Community Server (GPL)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

将所有配置文件中的192.168.60.128改为检材3的IP172.16.80.128
这里我使用7z直接打开jar包

在压缩包中进行编辑

编辑是一律使用替换

编辑结束后ctrl+s保存

直接更新到压缩包内,上传到服务器替换,配置结束

7. 检材1中,网站管理后台页面对应的网络端口为(答案填写阿拉伯数字,如“100”)

考点:证据综合分析
9090

这里手残提交快了,错了。在admin-api.jar中发现声明了6010端口,又有admin字段,但是6010怎么访问都不对,后面检材也都没开,小伙伴也没吭声,头铁直接交了,错了。
在这里插入图片描述
7-10题焦灼了一小时左右,在前面将配置文件中的IP都修改了之后,检材三将docker和其他组件手动起了之后,建材一中的组件也逐渐手工起了。
没有头绪,做手机+逆向的小伙伴在手机浏览器上找到了曾登录后台的痕迹和地址。
请添加图片描述请添加图片描述
请添加图片描述
请添加图片描述
问题迎刃而解,后来发现这些命令不应该直接用nohup去后台执行的,这杨我们就会少看到很多输出,报错和提示了,不用nohup其实对程序是没有影响的,这也是我这次比武很大的收获,后来手工起其实/web/app/admin才是真实的admin目录,admin-api.jar只是admin-api,
在这里插入图片描述

[root@localhost admin]# ls
build  dist  favicon.ico  index.html  LICENSE  MemberManage.vue  node_modules  nohup.out  package.json  package-lock.json  README-EN.md  README.md  src
[root@localhost admin]# npm run dev

> ztuo_admins@1.2.3 dev /web/app/admin
> webpack-dev-server --content-base ./ --open --inline --hot --compress --config build/webpack.dev.config.js

Happy[happybabel]: Version: 4.0.1. Threads: 2 (shared pool)
Project is running at http://0.0.0.0:9090/
webpack output is served from /dist/
Content not from webpack is served from /web/app/admin
Unable to open browser. If you are running in a headless environment, please do not use the open flag.
Happy[happybabel]: All set; signaling webpack to proceed.


Hash: 8e42b699de52a18648f5
Version: webpack 3.12.0
Time: 8079ms
                                Asset       Size  Chunks                    Chunk Names
                       0.chunk.js.map    28.6 kB       0  [emitted]         
 2c2ae068be3b089e0a5b59abb1831550.eot     121 kB          [emitted]         
05acfdb568b3df49ad31355b19495d4a.woff    67.9 kB          [emitted]         
 621bd386841f74e0053cb8e67f8a0604.svg     334 kB          [emitted]  [big]  
                           0.chunk.js    14.2 kB       0  [emitted]         
                           1.chunk.js    97.1 kB       1  [emitted]         
                           2.chunk.js    96.7 kB       2  [emitted]         
                           3.chunk.js    37.4 kB   3, 35  [emitted]         
                           4.chunk.js    17.8 kB       4  [emitted]         
                           5.chunk.js    53.1 kB       5  [emitted]         
                           6.chunk.js    18.5 kB       6  [emitted]         
                           7.chunk.js    22.6 kB       7  [emitted]         
                           8.chunk.js    22.1 kB       8  [emitted]         
                           9.chunk.js    24.8 kB       9  [emitted]         
                          10.chunk.js    9.39 kB      10  [emitted]         
                          11.chunk.js    19.1 kB      11  [emitted]         
                          12.chunk.js    13.6 kB      12  [emitted]         
                          13.chunk.js    11.6 kB      13  [emitted]         
                          14.chunk.js    10.6 kB      14  [emitted]         
                          15.chunk.js      11 kB      15  [emitted]         
                          16.chunk.js    14.7 kB      16  [emitted]         
                          17.chunk.js    8.31 kB      17  [emitted]         
                          18.chunk.js    42.8 kB      18  [emitted]         
                          19.chunk.js    15.4 kB      19  [emitted]         
                          20.chunk.js     9.5 kB      20  [emitted]         
                          21.chunk.js      13 kB      21  [emitted]         
                          22.chunk.js    19.5 kB      22  [emitted]         
                          23.chunk.js     9.6 kB      23  [emitted]         
                          24.chunk.js    15.5 kB      24  [emitted]         
                          25.chunk.js    9.01 kB      25  [emitted]         
                          26.chunk.js    16.5 kB      26  [emitted]         
                          27.chunk.js    18.3 kB      27  [emitted]         
                          28.chunk.js    16.5 kB      28  [emitted]         
                          29.chunk.js    10.6 kB      29  [emitted]         
                          30.chunk.js    14.2 kB      30  [emitted]         
                          31.chunk.js      29 kB      31  [emitted]         
                          32.chunk.js    26.3 kB      32  [emitted]         
                          33.chunk.js    10.2 kB      33  [emitted]         
                          34.chunk.js    16.8 kB      34  [emitted]         
                          35.chunk.js    15.2 kB      35  [emitted]         
                          36.chunk.js    20.9 kB      36  [emitted]         
                          37.chunk.js    11.7 kB      37  [emitted]         
                          38.chunk.js    13.3 kB      38  [emitted]         
                          39.chunk.js    16.4 kB      39  [emitted]         
                          40.chunk.js    10.1 kB      40  [emitted]         
                          41.chunk.js    10.7 kB      41  [emitted]         
                          42.chunk.js    13.3 kB      42  [emitted]         
                          43.chunk.js    13.9 kB      43  [emitted]         
                          44.chunk.js    10.3 kB      44  [emitted]         
                          45.chunk.js    21.7 kB      45  [emitted]         
                          46.chunk.js    7.76 kB      46  [emitted]         
                          47.chunk.js    7.29 kB      47  [emitted]         
                          48.chunk.js    8.44 kB      48  [emitted]         
                          49.chunk.js    15.4 kB      49  [emitted]         
                          50.chunk.js    26.4 kB      50  [emitted]         
                          51.chunk.js    11.4 kB      51  [emitted]         
                          52.chunk.js    15.4 kB      52  [emitted]         
                              main.js    4.84 MB      53  [emitted]  [big]  main
                      vender-exten.js     299 kB      54  [emitted]  [big]  vender-exten
                       vender-base.js    2.24 MB      55  [emitted]  [big]  vender-base
                             main.css     227 kB      53  [emitted]         main
 24712f6c47821394fba7942fbb52c3b2.ttf     189 kB          [emitted]         
                       1.chunk.js.map     169 kB       1  [emitted]         
                       2.chunk.js.map     167 kB       2  [emitted]         
                       3.chunk.js.map    69.4 kB   3, 35  [emitted]         
                       4.chunk.js.map      30 kB       4  [emitted]         
                       5.chunk.js.map      77 kB       5  [emitted]         
                       6.chunk.js.map    28.2 kB       6  [emitted]         
                       7.chunk.js.map    48.9 kB       7  [emitted]         
                       8.chunk.js.map      51 kB       8  [emitted]         
                       9.chunk.js.map    60.3 kB       9  [emitted]         
                      10.chunk.js.map    16.6 kB      10  [emitted]         
                      11.chunk.js.map    33.9 kB      11  [emitted]         
                      12.chunk.js.map    28.8 kB      12  [emitted]         
                      13.chunk.js.map    21.1 kB      13  [emitted]         
                      14.chunk.js.map    19.4 kB      14  [emitted]         
                      15.chunk.js.map    21.9 kB      15  [emitted]         
                      16.chunk.js.map    31.3 kB      16  [emitted]         
                      17.chunk.js.map    13.7 kB      17  [emitted]         
                      18.chunk.js.map     121 kB      18  [emitted]         
                      19.chunk.js.map    38.7 kB      19  [emitted]         
                      20.chunk.js.map      19 kB      20  [emitted]         
                      21.chunk.js.map    26.5 kB      21  [emitted]         
                      22.chunk.js.map    50.6 kB      22  [emitted]         
                      23.chunk.js.map      26 kB      23  [emitted]         
                      24.chunk.js.map    36.4 kB      24  [emitted]         
                      25.chunk.js.map    18.6 kB      25  [emitted]         
                      26.chunk.js.map    30.6 kB      26  [emitted]         
                      27.chunk.js.map    40.1 kB      27  [emitted]         
                      28.chunk.js.map    28.6 kB      28  [emitted]         
                      29.chunk.js.map    26.3 kB      29  [emitted]         
                      30.chunk.js.map      29 kB      30  [emitted]         
                      31.chunk.js.map    66.4 kB      31  [emitted]         
                      32.chunk.js.map    69.3 kB      32  [emitted]         
                      33.chunk.js.map    17.8 kB      33  [emitted]         
                      34.chunk.js.map    41.7 kB      34  [emitted]         
                      35.chunk.js.map      35 kB      35  [emitted]         
                      36.chunk.js.map    44.6 kB      36  [emitted]         
                      37.chunk.js.map    23.9 kB      37  [emitted]         
                      38.chunk.js.map    29.6 kB      38  [emitted]         
                      39.chunk.js.map    38.4 kB      39  [emitted]         
                      40.chunk.js.map    19.5 kB      40  [emitted]         
                      41.chunk.js.map    20.7 kB      41  [emitted]         
                      42.chunk.js.map      29 kB      42  [emitted]         
                      43.chunk.js.map      27 kB      43  [emitted]         
                      44.chunk.js.map    20.2 kB      44  [emitted]         
                      45.chunk.js.map    46.8 kB      45  [emitted]         
                      46.chunk.js.map    13.1 kB      46  [emitted]         
                      47.chunk.js.map    12.2 kB      47  [emitted]         
                      48.chunk.js.map    13.7 kB      48  [emitted]         
                      49.chunk.js.map    25.7 kB      49  [emitted]         
                      50.chunk.js.map    62.2 kB      50  [emitted]         
                      51.chunk.js.map      24 kB      51  [emitted]         
                      52.chunk.js.map    31.3 kB      52  [emitted]         
                          main.js.map    5.97 MB      53  [emitted]         main
                         main.css.map   85 bytes      53  [emitted]         main
                  vender-exten.js.map     361 kB      54  [emitted]         vender-exten
                   vender-base.js.map    2.67 MB      55  [emitted]         vender-base
                          favicon.ico    2.93 kB          [emitted]         
                        ../index.html  708 bytes          [emitted]         
                                g.css     212 kB          [emitted]         
                                r.css     212 kB          [emitted]         
                                y.css     212 kB          [emitted]         
   [5] ./node_modules/js-cookie/src/js.cookie.js 3.89 kB {54} [built]
  [18] (webpack)-dev-server/client?http://0.0.0.0:9090 7.93 kB {55} [built]
  [20] (webpack)/hot/log.js 1.04 kB {55} [built]
  [21] (webpack)/hot/dev-server.js 1.61 kB {55} [built]
  [22] ./node_modules/iview/dist/iview.js 1.48 MB {55} [built]
  [35] ./node_modules/qs/lib/index.js 211 bytes {53} [built]
  [36] ./src/store/index.js 757 bytes {53} [built]
  [39] (webpack)/hot/emitter.js 77 bytes {55} [built]
  [71] multi (webpack)-dev-server/client?http://0.0.0.0:9090 webpack/hot/dev-server @/main 52 bytes {53} [built]
  [77] ./node_modules/strip-ansi/index.js 161 bytes {55} [built]
  [90] ./src/main.js 4.12 kB {53} [built]
 [189] multi (webpack)-dev-server/client?http://0.0.0.0:9090 webpack/hot/dev-server @/vendors/vendors.base.js 52 bytes {55} [built]
 [190] ./src/vendors/vendors.base.js 431 bytes {55} [built]
 [191] multi (webpack)-dev-server/client?http://0.0.0.0:9090 webpack/hot/dev-server @/vendors/vendors.exten.js 52 bytes {54} [built]
 [192] ./src/vendors/vendors.exten.js 590 bytes {54} [built]
    + 510 hidden modules
Child html-webpack-plugin for "../index.html":
     1 asset
       [0] ./node_modules/html-webpack-plugin/lib/loader.js!./src/template/index.ejs 1.3 kB {0} [built]
       [1] ./node_modules/lodash/lodash.js 540 kB {0} [built]
       [2] (webpack)/buildin/global.js 509 bytes {0} [built]
       [3] (webpack)/buildin/module.js 517 bytes {0} [built]
Child extract-text-webpack-plugin node_modules/extract-text-webpack-plugin/dist node_modules/css-loader/index.js?minimize!node_modules/autoprefixer-loader/index.js!node_modules/iview/dist/styles/iview.css:
                                    Asset     Size  Chunks                    Chunk Names
     2c2ae068be3b089e0a5b59abb1831550.eot   121 kB          [emitted]         
     24712f6c47821394fba7942fbb52c3b2.ttf   189 kB          [emitted]         
    05acfdb568b3df49ad31355b19495d4a.woff  67.9 kB          [emitted]         
     621bd386841f74e0053cb8e67f8a0604.svg   334 kB          [emitted]  [big]  
       [0] ./node_modules/iview/dist/styles/fonts/ionicons.eot?v=2.0.0 82 bytes {0} [built]
       [1] ./node_modules/css-loader?minimize!./node_modules/autoprefixer-loader!./node_modules/iview/dist/styles/iview.css 230 kB {0} [built]
       [2] ./node_modules/css-loader/lib/url/escape.js 448 bytes {0} [built]
       [3] ./node_modules/css-loader/lib/css-base.js 2.26 kB {0} [built]
       [4] ./node_modules/iview/dist/styles/fonts/ionicons.ttf?v=2.0.0 82 bytes {0} [built]
       [5] ./node_modules/iview/dist/styles/fonts/ionicons.woff?v=2.0.0 83 bytes {0} [built]
       [6] ./node_modules/iview/dist/styles/fonts/ionicons.svg?v=2.0.0 82 bytes {0} [built]
webpack: Compiled successfully.

访问9090端口,访问到后台

故后台端口为9090

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

考点:网站重构
https://pan.forensix.cn/f/c45ca511c7f2469090ad

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

这里也是,开始很久没找到入口在哪里,重启了一遍,不nohup之后在对各个服务进行启动,在/web/app/web下启动npm run dev
就能成功启动网站
在这里插入图片描述

[root@localhost web]# npm run dev

> bitrade@1.0.0 dev /web/app/web
> webpack-dev-server --inline --progress --config build/webpack.dev.conf.js

 10% building modules 2/3 modules 1 active ...ode_modules/webpack/hot/dev-server.jsUnable to open brow 22% building modules 104/124 modules 20 active ...late&index=0!/web/app/web/src/App.vue{ parser: "babylon" } is deprecated; we now treat it as { parser: "babel" }.                 95% emitting                                                                           


 DONE  Compiled successfully in 6257ms                                                                                                                                        11:39:04 AM

 I  Your application is running here: http://0.0.0.0:3000 

端口为3000

访问网站主页,在右上角发现apk下载,有俩二维码

扫描发现两个是相同的
在这里插入图片描述
访问,下载到一个apk,交给逆向的同学。
在这里插入图片描述

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

考点:网站重构,源码分析,后台密码绕过
在这里插入图片描述

此处纠结半个小时,因为没找到网站后台数据库
在这里插入图片描述
做pc的同学问我是不是有个b1数据库,我说是的,此时我还没有意识到问题的严重性,纠结好久。

接下来是我纠结的过程,也是做题时一部分绕弯的思路,不想看可以跳过


因为实在找不到数据库在哪,检材3一干二净
在这里插入图片描述
检材1数据库没有密码,但是取证软件显示里面也是没有东西的

那只有可能在检材2里,分析一下检材2,其中有两个b1表,大小还一样,盲猜一样

加上虽有此时做到做过了wsl,我一直认为b1表会存在wsl的mysql里,仿真起来

发现有俩不同ubuntu,问队友队友也说不清,两个打开一看,一个打开直接进,一个打开刚好进初始化向导,那肯定时直接进那个是对的

使用检材1里的数据库密码,提示的是这个错误
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)
想可能权限不够?
su root了一下 猜密码 猜到123456竟然猜对了
在这里插入图片描述
同样报错,不是权限问题,搜索了一下,感觉有点复杂,此时时间还剩1.5个小时左右,后台还没起来,头皮发麻,不想调错了。
使用取证软件的数据库工具将所有表导出
在这里插入图片描述
新建一个b1数据库
尝试将sql语句导回到这个数据库中,一直失败
在这里插入图片描述
在这里插入图片描述
随便看看计算机里的文件,在D盘根目录找到了这个数据库文件,还有两个服务器的启动脚本,这个服务器对我来说已经结束了。
在这里插入图片描述

在这里插入图片描述

#!/bin/bash

sleep 2s
echo "Starting Zookeeper"
nohup /data/install/apache/zookeeper-3.4.10/bin/zkServer.sh start & 
sleep 2s
echo "Starting Kafka"
nohup /data/install/apache/kafka_2.12-1.0.1/bin/zookeeper-server-start.sh /data/install/apache/kafka_2.12-1.0.1/config/zookeeper.properties &
sleep 5s
nohup /data/install/apache/kafka_2.12-1.0.1/bin/kafka-server-start.sh /data/install/apache/kafka_2.12-1.0.1/config/server.properties &
echo "Finish"kil

在这里插入图片描述

#!/bin/bash

echo "Starting App: Cloud " 
nohup java -jar /web/app/cloud.jar &
sleep 20s
echo "Starting App: market " 
nohup  java -jar /web/app/market.jar &
sleep 60s
echo "Starting App:exchange " 
nohup  java -jar /web/app/exchange.jar &
sleep 20s
echo "Starting App:admin" 
nohup  java -jar /web/app/admin-api.jar &
sleep 20s
echo "Starting App:ucenter" 
nohup  java -jar /web/app/ucenter-api.jar &
sleep 20s
echo "Starting WEB:WEB" 
cd /web/app/web/
nohup npm run dev  &
cd /web/app
echo "Starting WEB:admin" 
cd /web/app/admin/
nohup npm run dev  &
cd /web/app
echo "Finish"kil

但是怎么将这个b1这个数据库文件夹里的文件导入到docker对应的文件目录中
我想到docker cp 这样的方法
只需定位到容器内这个b1文件夹的路径即可,加上刚才我们已经新建了一个b1数据库,我们直接搜索
在这里插入图片描述

[root@localhost b1]# find / -name b1
/data/mysql/db/b1

发现数据卷映射到本地了,大喜,虽然没有起docker-compose,但是找到了这个数据卷位置,我们到这个目录中,删除我们建的b1数据库,将检材2中的数据库文件导出,导入到这个数据卷目录当中,此时刷新一下数据库,这个数据表跃然出现在我们面前
在这里插入图片描述
查看其密码,发现长得倒也像md5,但是不是很肯定,用户名确是root
在这里插入图片描述


没办法了,只好反编译
将整个adimn-api.jar拖到jadx中
随便尝试登录,查看输出报错
在jadx中定位报错所在位置
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
是在cn.ztuo.bitrade.controller.system.EmployeeController的当中
查看登录逻辑
在这里插入图片描述
加密核心逻辑为String password2 = Encrypt.MD5(password + this.md5Key);
那么this.md5Key就是他的盐,Encrypt.MD5就是他的加密方法
双击Encrypt.MD5技巧怒查看,应该就是进行一个md5的操作,我java也不太好
在这里插入图片描述
esc返回,看一下盐
双击md5Key跳转
在这里插入图片描述
发现似乎是获取一个${bdtop.system.md5.key}类似全局变量的东西,要从别的地方填充到此处的,这个东西很眼熟啊,之前找配置文件,那五个配置文件反反复复看了十几遍,这个就在配置文件最底下

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

考点:网站重构,源码分析,后台密码绕过
XehGyeyrVgOV4P8Uf70REVpIw3iVNwNs
在这里插入图片描述
所以盐值就是XehGyeyrVgOV4P8Uf70REVpIw3iVNwNs

后台密码绕过

他这里没有问下去了,其实这里就应该把网站后台密码绕过然后进去看,因为我不太擅长java,看代码又眼花,所以一般我不自己构造加密字符串,这里是反编译的源码,又不好修改,报错输出这条路又走不通,这里我想到mysql的general log,我随便输个密码,网站肯定会构造好密钥串发到数据库去查的,看数据库的查询日志不就能直接看到构造好的密钥串了吗?
遂至mysql 进行一个general log一把梭操作
很巧general log一直开着,这也给我一个思路,后面那些删除的、修改的只要那时候general log也开着,就一定能找到记录。

show variables like 'general_log';

在这里插入图片描述
查看一下general log的位置

show variables like 'general_log_file';

在这里插入图片描述
不做其他任何操作,我使用密码123尝试登录,登陆失败
在这里插入图片描述
查看general log的最后几行
在这里插入图片描述
发现一个查询语句

2022-10-29T16:31:12.546422Z	   12 Query	select admin0_.id as id1_0_, admin0_.area_code as area_cod2_0_, admin0_.avatar as avatar3_0_, admin0_.department_id as departm18_0_, admin0_.email as email4_0_, admin0_.enable as enable5_0_, admin0_.google_date as google_d6_0_, admin0_.google_key as google_k7_0_, admin0_.google_state as google_s8_0_, admin0_.last_login_ip as last_log9_0_, admin0_.last_login_time as last_lo10_0_, admin0_.mobile_phone as mobile_11_0_, admin0_.password as passwor12_0_, admin0_.qq as qq13_0_, admin0_.real_name as real_na14_0_, admin0_.role_id as role_id15_0_, admin0_.status as status16_0_, admin0_.username as usernam17_0_ from admin admin0_ where admin0_.username='root' and admin0_.password='f5fedc7f85ba5d6beec93944b8b474a6'

f5fedc7f85ba5d6beec93944b8b474a6就是构造好的密钥串,替换到数据库中,再使用123登录,即可登陆成功
在这里插入图片描述
至此网站重构结束。

检材3

在这里插入图片描述

20. 检材3中,监听33050端口的程序名(program name)为

docker-proxy
考点:基础取证
在这里插入图片描述

[root@localhost b1]# netstat -anptl
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:22              0.0.0.0:*               LISTEN      967/sshd            
tcp        0      0 0.0.0.0:33050           0.0.0.0:*               LISTEN      6420/docker-proxy   
tcp        0      0 172.16.80.128:22        172.16.80.1:59992       ESTABLISHED 1354/sshd: root@not 
tcp        0     36 172.16.80.128:22        172.16.80.1:59975       ESTABLISHED 1349/sshd: root@pts 
tcp        0      0 172.16.80.128:22        172.16.80.1:61167       ESTABLISHED 2434/sshd: root@not 
tcp6       0      0 :::9092                 :::*                    LISTEN      1678/java           
tcp6       0      0 :::2181                 :::*                    LISTEN      1392/java           
tcp6       0      0 :::33255                :::*                    LISTEN      1392/java           
tcp6       0      0 :::39374                :::*                    LISTEN      1678/java           
tcp6       0      0 :::22                   :::*                    LISTEN      967/sshd            
tcp6       0      0 :::33050                :::*                    LISTEN      6426/docker-proxy   
tcp6       0      0 ::1:36472               ::1:2181                ESTABLISHED 1678/java           
tcp6       0      0 ::1:2181                ::1:36472               ESTABLISHED 1392/java    

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

考点:历史记录,配置文件
在这里插入图片描述
在前面讲的历史记录中
在这里插入图片描述

也可以在检材1配置文件里找到,检材1需要连接什么,检材3就需要有什么
在这里插入图片描述
在这里插入图片描述

22. 检材3中,MySQL数据库root账号的密码是

考点:配置文件
shhl7001
在前面检材1各配置文件中有
在这里插入图片描述

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

考点:mysql,配置文件
/var/lib/mysql
进docker mysql内部 查看一下配置文件
在这里插入图片描述

[root@localhost b1]# docker exec -it 8e /bin/bash
root@8eda4cb0b452:/# whereis mysql
mysql: /usr/bin/mysql /usr/lib/mysql /etc/mysql /usr/share/mysql
root@8eda4cb0b452:/# cd /etc/mysql
root@8eda4cb0b452:/etc/mysql# sl
bash: sl: command not found
root@8eda4cb0b452:/etc/mysql# ls
conf.d	my.cnf	my.cnf.fallback  mysql.cnf  mysql.conf.d
root@8eda4cb0b452:/etc/mysql# cat mysql.cnf 
[mysqld]
user=mysql
general_log=1
default-storage-engine=INNODB
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
root@8eda4cb0b452:/etc/mysql# cd mysql.conf.d/
root@8eda4cb0b452:/etc/mysql/mysql.conf.d# ls
mysqld.cnf
root@8eda4cb0b452:/etc/mysql/mysql.conf.d# cat mysqld.cnf 
# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License, version 2.0,
# as published by the Free Software Foundation.
#
# This program is also distributed with certain software (including
# but not limited to OpenSSL) that is licensed under separate terms,
# as designated in a particular file or component or in included license
# documentation.  The authors of MySQL hereby grant you an additional
# permission to link the program and your derivative works with the
# separately licensed software that they have included with MySQL.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License, version 2.0, for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA

#
# The MySQL  Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

[mysqld]
pid-file	= /var/run/mysqld/mysqld.pid
socket		= /var/run/mysqld/mysqld.sock
datadir		= /var/lib/mysql
#log-error	= /var/log/mysql/error.log
# By default we only accept connections from localhost
#bind-address	= 127.0.0.1
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
root@8eda4cb0b452:/etc/mysql/mysql.conf.d# 

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

b1
考点:配置文件,综合分析
检材1中的配置文件连接的是b1数据库
在这里插入图片描述
手工逐条启动检材1中的网站时,报错提示缺少数据库b1
检材2中发现b1数据库
在这里插入图片描述

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

3
考点:综合分析,sql查询,日志,general log
解析见下题

26. 勒索者在数据库中删除的用户数量为(答案填写阿拉伯数字,如“15”)

28
考点:综合分析,sql查询,日志,general log
查看general log
做过这类题目,更新一般直接找update,删除一般直接找delete没错的,如果找不到还要考虑其他情况。
搜索update
共找到3条记录

2022-10-19T03:20:39.001499Z	   13 Query	UPDATE `b1`.`member` SET `mobile_phone` = '13638991111' WHERE `id` = 9
2022-10-19T03:20:39.009042Z	   13 Query	SELECT * FROM `b1`.`member` WHERE `id` = 9
2022-10-19T03:20:39.158260Z	   10 Query	SET autocommit=0
2022-10-19T03:20:39.159384Z	   10 Query	select lockpositi0_.id as id1_36_, lockpositi0_.amount as amount2_36_, lockpositi0_.coin_id as coin_id10_36_, lockpositi0_.create_time as create_t3_36_, lockpositi0_.member_id as member_i4_36_, lockpositi0_.member_name as member_n5_36_, lockpositi0_.reason as reason6_36_, lockpositi0_.status as status7_36_, lockpositi0_.unlock_time as unlock_t8_36_, lockpositi0_.wallet_id as wallet_i9_36_ from lock_position_record lockpositi0_ where lockpositi0_.status=0 and lockpositi0_.unlock_time<'2022-10-18 23:20:39.158'
2022-10-19T03:20:39.159820Z	   10 Query	commit
2022-10-19T03:20:39.160034Z	   10 Query	SET autocommit=1
2022-10-19T03:20:41.844626Z	   13 Init DB	b1
2022-10-19T03:20:41.851525Z	   13 Query	UPDATE `b1`.`member` SET `mobile_phone` = '13282992222' WHERE `id` = 10
2022-10-19T03:20:41.857329Z	   13 Query	SELECT * FROM `b1`.`member` WHERE `id` = 10
2022-10-19T03:20:44.177888Z	   13 Init DB	b1
2022-10-19T03:20:44.184953Z	   13 Query	UPDATE `b1`.`member` SET `mobile_phone` = '13636993333' WHERE `id` = 11

每次登录会更新登录时间IP等,这些其他修改可以直接忽略

搜索delete
在这里插入图片描述
可以查到按顺序删除了28条记录

2022-10-19T03:16:36.987428Z	   13 Query	DELETE FROM `b1`.`member` WHERE `id` = 973
2022-10-19T03:16:37.011565Z	   13 Query	DELETE FROM `b1`.`member` WHERE `id` = 974
2022-10-19T03:16:37.018915Z	   13 Query	DELETE FROM `b1`.`member` WHERE `id` = 975
2022-10-19T03:16:37.024719Z	   13 Query	DELETE FROM `b1`.`member` WHERE `id` = 976
2022-10-19T03:16:37.030514Z	   13 Query	DELETE FROM `b1`.`member` WHERE `id` = 977
2022-10-19T03:16:37.036525Z	   13 Query	DELETE FROM `b1`.`member` WHERE `id` = 978
2022-10-19T03:16:37.043063Z	   13 Query	DELETE FROM `b1`.`member` WHERE `id` = 979
2022-10-19T03:16:37.050115Z	   13 Query	DELETE FROM `b1`.`member` WHERE `id` = 980
2022-10-19T03:16:37.058208Z	   13 Query	DELETE FROM `b1`.`member` WHERE `id` = 981
2022-10-19T03:16:37.063910Z	   13 Query	DELETE FROM `b1`.`member` WHERE `id` = 982
2022-10-19T03:16:37.069479Z	   13 Query	DELETE FROM `b1`.`member` WHERE `id` = 983
2022-10-19T03:16:37.075433Z	   13 Query	DELETE FROM `b1`.`member` WHERE `id` = 984
2022-10-19T03:16:37.081648Z	   13 Query	DELETE FROM `b1`.`member` WHERE `id` = 985
2022-10-19T03:16:37.090573Z	   13 Query	DELETE FROM `b1`.`member` WHERE `id` = 986
2022-10-19T03:16:37.097442Z	   13 Query	DELETE FROM `b1`.`member` WHERE `id` = 987
2022-10-19T03:16:37.109309Z	   13 Query	DELETE FROM `b1`.`member` WHERE `id` = 988
2022-10-19T03:16:37.116375Z	   13 Query	DELETE FROM `b1`.`member` WHERE `id` = 989
2022-10-19T03:16:37.122000Z	   13 Query	DELETE FROM `b1`.`member` WHERE `id` = 990
2022-10-19T03:16:37.128186Z	   13 Query	DELETE FROM `b1`.`member` WHERE `id` = 991
2022-10-19T03:16:37.134416Z	   13 Query	DELETE FROM `b1`.`member` WHERE `id` = 992
2022-10-19T03:16:37.141373Z	   13 Query	DELETE FROM `b1`.`member` WHERE `id` = 993
2022-10-19T03:16:37.147063Z	   13 Query	DELETE FROM `b1`.`member` WHERE `id` = 994
2022-10-19T03:16:37.153631Z	   13 Query	DELETE FROM `b1`.`member` WHERE `id` = 995
2022-10-19T03:16:37.161562Z	   13 Query	DELETE FROM `b1`.`member` WHERE `id` = 996
2022-10-19T03:16:37.168149Z	   13 Query	DELETE FROM `b1`.`member` WHERE `id` = 997
2022-10-19T03:16:37.175782Z	   13 Query	DELETE FROM `b1`.`member` WHERE `id` = 998
2022-10-19T03:16:37.183277Z	   13 Query	DELETE FROM `b1`.`member` WHERE `id` = 999
2022-10-19T03:16:37.191203Z	   13 Query	DELETE FROM `b1`.`member` WHERE `id` = 1000

而且都是对member表操作,其他表一点都没动

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

172.16.80.197
考点:网站重构,数据分析
在这里插入图片描述
在后台可以看到最原始的操作IP都是172.16.80.100
后来变成了172.16.80.197服务器登录也都是172.16.80.100
在这里插入图片描述
可以考虑172.16.80.197才是外来的,尝试解压压缩包,解压成功

28. 还原全部被删改数据,用户id为500的注册会员的HT币钱包地址为

cee631121c2ec9232f3a2f028ad5c89b
考点:网站重构,数据分析
在后台查找id为500的用户
在这里插入图片描述
不能直接查id
到member表里看一下
在这里插入图片描述
查个电话,搜一下电话
在这里插入图片描述
在这里插入图片描述
查看操作找到地址cee631121c2ec9232f3a2f028ad5c89b

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

164
考点:sql语句,数据分析
这题比武的时候写错了,没加删除的数据
这里讲比武的时候的思路,并按比武时的思路解下去,也能出,更好的方法是将删除的数据导回到数据库中

在这里插入图片描述
会员管理处有等级
对数据库进行分析,在member表处也能找到类似等级的
member_grade_id
在这里插入图片描述
为了确认,查两个用户对应一下
在这里插入图片描述
在这里插入图片描述
是对应的,那么进行一个计数操作
在这里插入图片描述
158条是错的,我们比武时就做到这一步,接下来是按照我的思路继续做下去
之前删掉的记录没有包含其中,比武的时候没有这么清晰,没敢把全部导回去,其实先导回去再分析出来的结果就都是对的
我们查看删除记录
在这里插入图片描述
找前面insert这些id的记录
在这里插入图片描述
查找member_grade_id对应的字段,是在第二个中国后的第二个字段,特征为0, 3, 0
在这里插入图片描述
对这一块删除的数据进行检索
在这里插入图片描述
找到6个
故最终答案为158+6=164个,很可惜做错了

30. 还原全部被删改数据,哪些用户ID没有充值记录(答案填写阿拉伯数字,多个ID以逗号分隔,如“15,16,17”)

318,989
考点:数据分析,sql语句
这里对表进行分析
先将member表中所有未删除的的id复制到excel中
在这里插入图片描述
再将删除的id补充进去,发现刚好有序的1000个整
在这里插入图片描述
对财务管理进行分析

发现充值表为member_transaction,member_transaction没有进行删除和修改,放心使用
在这里插入图片描述
查看id=1和id=2的用户进行确认
在这里插入图片描述
在这里插入图片描述
将member_transaction表里的所有有的id(即充值过的id)导出
在这里插入图片描述
去重后留下998个顺序不重复的值
在这里插入图片描述
与左边序号一一对比,目力审计得318和989没有充值记录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

1000
考点:数据分析,sql语句
在这里插入图片描述
后台找不到这个日期的交易记录,但刚才看member_transaction表的时候,第一页有看到
在这里插入图片描述
查询计数一下
在这里插入图片描述

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

408228
考点:数据分析,sql语句
除了member表,其他表都没有被删除和修改,“还原全部被删改数据”这句话在这里没有作用,继续对member_transaction的充值进行分析
发现充值对应这里flag字段
flag=0则为充值

在这里插入图片描述
对所有充值的usdt金额进行统计
在这里插入图片描述
网站部分到此结束

因为我专心做服务器,可能其他与手机检材的与pc的联动会少一点。这就是团体赛,需要配合,单刷的话整个脉络会更清楚。这是我比赛的时候的思路,现在听完关老师的讲解,对这套题有了更全面的理解,我的思路与关老师的思路基本一致,由于没有上帝视角,走了点弯路。

检材1和3错了两题,一题是头铁交太快了,后台都没进就交了,一题是忘了算删掉的数据了,但是比赛的时候sql语句手滑打错了,错的答案都算错了。队友一个IP手滑打错了加上一个废题。这么比起来我还是有很大提高空间的。

参赛体验不错,仍要继续不断学习。

  • 16
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值