2023年首届盘古石杯全国电子数据取证大赛技能赛决赛(服务器部分)

image-20230812152937031

77.请分析服务器,给出NAS服务器系统账号密码?[答案格式:xx@xx][★★★☆☆☆]

image-20230812160403905

78.请分析服务器,给出NAS服务器的版本信息?[答案格式:xx-xx-xx][★★☆☆☆☆]

配个网先,仅主机模式

image-20230812161722274

image-20230812161737830

image-20230812154113760

79.请分析服务器,给出NAS服务器内用户SMB的邮箱?[答案格式:xx@xx][★★☆☆☆☆]

image-20230812154231508

80.请分析服务器,给出NAS服务器系统告警服务使用的邮箱?[答案格式:xx@xx][★★☆☆☆☆]

image-20230812154305306

81.请分析服务器,给出NAS服务器内存储池名?[答案格式:xxx][★★☆☆☆]

image-20230812154339728

82.请分析服务器,给出NAS服务器内有几个数据集和几个Zvol?[答案格式:0,0][★★★☆☆]

image-20230812154643209

image-20230812154658987

依次类推,答案为2,3

83.请分析服务器,给出该NAS服务器存储监听IP和端口?[答案格式:192.168.1.1:8080][★★★☆☆]

image-20230812155009499

84.请分析服务器,给出NAS服务器内iSCSI目标为web的连接所使用的启动器组ID?[答案格式:xx][★★★☆☆]

image-20230812155411930

85.请分析服务器,给出web服务器连接NAS服务器所使用的iqn?[答案格式:iqn.xxx][★★★☆☆]

image-20230812155456632

86.请分析服务器,给出web服务器连接NAS服务器所使用的账号和密码?[答案格式:root/123][★★★★★]

image-20230812155549925

87.请分析服务器,给出redis所使用的配置文件?[答案格式:/home/1.conf][★★☆☆☆]

尝试开启虚拟机,失败,没有虚拟化

image-20230812163512395

image-20230812163729575

image-20230812184017251

内存开大点,全部启起来

教你如何破解 Centos 7 的 root 密码 | 《Linux就该这么学》 (linuxprobe.com)

如何开启或关闭SELinux_云服务器 ECS-阿里云帮助中心 (aliyun.com)

虚拟机–WEB–开启–VNC–进入单用户模式–关闭SELinux–重启–进入单用户模式–修改root密码–vi /etc/passwd 修改root shell为/bin/bash–进入系统

rw init=/sysroot/bin/sh

image-20230812200226506

ctrl+x进入单用户

chroot /sysroot
vi /etc/selinux/config

image-20230812200640582

vi /etc/passwd

image-20230812200732674

passwd

image-20230812200906668

重启就ok了

绕密后xshell连接

image-20230812195523070

image-20230812195643197

88.请分析服务器,给出跑分网站后台根目录?[答案格式:/xx/xx][★★★☆☆]

/www一看没有,应该是要挂载上去的,结合前面题目的共享服务

先开启iSCSI

image-20230812222602848

image-20230812222617365

只有sdb1是有数据的,所以这里我挂sdb1到/www下

image-20230812222933284

挂上去有数据了

image-20230812223042636

Thinkphp站,那么根目录就是public

89.请分析服务器,嫌疑人所使用的跑分系统可能来自哪,请给出网站?[答案格式:www.baidu.com][★★★☆☆]

随便翻了一个配置文件就有了

image-20230812223224418

90.请分析服务器,给出数据库root账号密码?[答案格式:password][★★★★★]

Shell脚本加密与解密-腾讯云开发者社区-腾讯云 (tencent.com)

image-20230812203254193

一眼加密

tail -n +44 backup.sh >backup.gz
gunzip backup.gz 

image-20230812203416279

91.请分析服务器,给出数据库备份文件存放路径?[答案格式:/xx/xxx][★★★★★]

上面都在了

92.请分析服务器,给出数据库备份文件解压密码?[答案格式:password][★★★★★]

上面都在了

93.请分析服务器,给出数据库备份文件间隔多少天会删除?[答案格式:1][★★★★★]

上面都在了

94.请分析服务器,给出数据库每天几点会执行备份操作?[答案格式:00:00][★★★☆☆]

image-20230812203912415

这段命令是设置了一个定时任务,它将在每天的凌晨2点执行一个脚本文件。具体来说,命令的含义是:

- `0 2 * * *`:这部分是时间设置,表示在每天的第2小时(凌晨2点)执行任务。
- `sh /root/backup.sh`:这是要执行的命令,它会运行位于 `/root/backup.sh` 路径下的 shell 脚本文件。

因此,这个定时任务将会在每天的凌晨2点运行 `/root/backup.sh` 脚本,用途可能是进行备份操作。

95.请分析服务器,给出跑分网站后台用户余额总计?[答案格式:1000][★★☆☆☆]

下面是网站重构,首先恢复一下数据库

#!/bin/bash
#指定连接数据库信息(用户名、密码、连接地址、端口、安装目录)
DB_USER="root"
DB_PWD="3W.pa0fen.com"
DB_IP="127.0.0.1"
DB_PORT="3306"
#是指mysqldump命令所在目录
DB_DIR="/usr/bin"
#获取系统当前时间并格式化为:20210729
BAK_DATE=`date +%Y%m%d`
#指定备份文件保存的天数
BAK_DAY=45
#指定备份的数据库,可以指定多个中间用空格隔开,或者不指定则默认全部备份
BAK_DATABASES=("paofen")
#指定备份路径
BAK_PATH="/data/mysql_back"
#创建备份目录
mkdir -p ${BAK_PATH}/$BAK_DATE
#开始执行备份
echo "------- $(date +%F_%T) Start MySQL database backup-------- " >>${BAK_PATH}/back.log
#循环遍历
for database in "${BAK_DATABASES[@]}"
do  
    ${DB_DIR}/mysqldump -u${DB_USER} -p${DB_PWD} --host=${DB_IP} --port=${DB_PORT} --databases $database > ${BAK_PATH}/${BAK_DATE}/${database}.sql
done
#创建压缩文件
cd ${BAK_PATH}
tar -czPf - $BAK_DATE | openssl des3 -salt -k p@ssw0rd -out db_backup_${BAK_DATE}.tar.gz
#删除备份目录
rm -rf ${BAK_PATH}/$BAK_DATE
#遍历备份目录下的文件
LIST=$(ls ${BAK_PATH}/db_backup_*)
#获取截止时间,将早于该时间的文件删除
SECONDS=$(date -d "$(date +%F) - ${BAK_DAY} days" +%s)
for index in ${LIST}
do 
  #获取文件名并格式化,获取时间,如20210729
 timeString=$(echo ${index} | egrep -o "?[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]")
 if [ -n "$timeString" ]
 then
     indexDate=${timeString//./-}
     indexSecond=$( date -d ${indexDate} +%s )
     #与当前时间做比较,把早于7天的文件删除
     if [ $(( $SECOND - $indexDate )) -gt 0 ]
     then 
        rm -f $index
        echo "-------deleted old file $index -------" >> ${BAK_PATH}/back.log
     fi
 fi
done
echo "-------$(date +%F_%T) Stop MySQL database backup-------- " >>${BAK_PATH}/back.log

老方法先mount上

image-20230812225306530

image-20230812225351821

tar -czPf - $BAK_DATE | openssl des3 -salt -k p@ssw0rd -out db_backup_${BAK_DATE}.tar.gz

加密逻辑是这样的,可推解密逻辑

openssl des3 -d -salt -k p@ssw0rd -in db_backup_20230515.tar.gz| tar -zxv

得到sql文件

service mysqld start
mysql -u root -p
source /data/mysql_back/20230515/paofen.sql

成功导入

image-20230813144108296

顺便把mysql日志开启,这样有利于后面的网站绕密

show variables like 'general_log';
show variables like 'general_log_file';

set global general_log = ON;
set global general_log_file='/tmp/general.log';

image-20230813145352187

回到web虚拟机,同样也是什么服务也没启

image-20230813145402980

service nginx start:启动nginx服务

service php-fpm start:启动PHP-FPM,以支持Nginx对PHP的解析

chgrp -R nginx /www/admin.paofen.com
chown -R nginx /www/admin.paofen.com:设置admin.paofen.com/目录及其子目录的所属组与拥有者为nginx

chgrp redis /var/log/redis/redis.log
chown redis /var/log/redis/redis.log:设置redis.log文件的所属组与拥有者为redis

service redis start:启动redis服务

更改数据库配置文件

image-20230813150021012

因为hosts里写了3w.paofen.db的地址,所以这里不用改

image-20230813150059223

最后看nginx配置文件

cat admin.paofen.com.conf

server
{
    listen 8083;
    server_name admin.paofen.com;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/admin.paofen.com/public;

    error_page  404              /404.html;
    location = /404.html {
        return 404 'Sorry, File not Found!';
    }
    error_page  500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html; # windows用户替换这个目录
    }
    location / {
        try_files $uri @rewrite;
    }
    location @rewrite {
        set $static 0;
        if  ($uri ~ \.(css|js|jpg|jpeg|png|gif|ico|woff|eot|svg|css\.map|min\.map)$) {
            set $static 1;
        }
        if ($static = 0) {
            rewrite ^/(.*)$ /index.php?s=/$1;
        }
    }
    location ~ /Uploads/.*\.php$ {
        deny all;
    }
    location ~ \.php/ {
       if ($request_uri ~ ^(.+\.php)(/.+?)($|\?)) { }
       fastcgi_pass 127.0.0.1:9000;
       include fastcgi_params;
       fastcgi_param SCRIPT_NAME     $1;
       fastcgi_param PATH_INFO       $2;
       fastcgi_param SCRIPT_FILENAME $document_root$1;
    }
    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    location ~ /\.ht {
        deny  all;
    }
access_log /www/logs/admin.paofen.com.log main;
error_log  /www/logs/admin.paofen.com.error.log;
}

访问成功,但是连接失败

image-20230813150627436

尝试关闭两台虚拟机的防火墙

service firewalld stop

再次访问

image-20230813150906162

一片空白没有报错,应该是成功了

cat /www/logs/admin.paofen.com.log | grep admin

image-20230813151025584

找到后台地址

image-20230813151049530

先用admin/123456梭一发

image-20230813151156131

image-20230813151352301

日志里没有,那么只能修改判断逻辑

find ./ -type f -iname "*.php" | xargs grep "密码输入错误"

image-20230813151555973

看路径知道应该是改第一个

/**
     * 登录处理
     */
    public function loginHandle($username = '', $password = '', $verify = '')
    {

        $validate_result = $this->validateLogin->scene('admin')->check(compact('username','password','verify'));

        if (!$validate_result) {

            return [RESULT_ERROR, $this->validateLogin->getError()];
        }

        $member = $this->logicMember->getMemberInfo(['username' => $username]);

        if (!empty($member['password']) && data_md5_key($password) == $member['password']) {

            $this->modelMember->setInfo([TIME_UT_NAME => TIME_NOW, 'session_id' => session_id()], ['id' => $member['id']]);

            $auth = ['member_id' => $member['id'], TIME_UT_NAME => TIME_NOW];

            session('member_info', $member);
            session('member_auth', $auth);
            session('member_auth_sign', data_auth_sign($auth));

            action_log('登录', '登录操作,username:'. $username);

            return [RESULT_SUCCESS, '登录成功', url('index/index')];

        } else {

            $error = empty($member['id']) ? '用户账号不存在' : '密码输入错误';

            return [RESULT_ERROR, $error];
        }
    }

修改为

if (!empty($member['password']) && data_md5_key($password) != $member['password']) 

成功登录

image-20230813151959295

96.请分析服务器,给出跑分平台后台未处理的用户申请有多少个?[答案格式:1000][★★☆☆☆]

image-20230813152130360

97.请分析服务器,给出会员聂鸿熙推荐人的姓名?[答案格式:张三][★★☆☆☆]

image-20230813152206777

98.请分析服务器,给出跑分平台内用户银行卡所属银行共有几家?[答案格式:10][★★★★★]

image-20230813152911997

或sql查询

image-20230813153001564

99.接上题,请给出这些银行中用户数最多的银行名称?[答案格式:xx银行][★★★★★]

image-20230813153050176

这道题csv有点慢了,不如sql

image-20230813153232057

100.请分析服务器,给出用户“祝虹雨”通过审核的充值总额?[答案格式:10][★★★★★]

image-20230813153648620

101.请分析服务器,给出该跑分团队可能的办公大楼有几个?[答案格式:1][★★☆☆☆]

对CSM虚拟机动手

image-20230813153816340

宝塔的特征,宝塔一把梭准备好

解除宝塔限制:bt 23 && bt 11 && bt 12 && bt 13 && bt 24 && bt 5或
cp -r /www/backup/panel/ /root/ && cp -r /www/server/panel/data/ /root && rm -f /www/server/panel/data/close.pl && bt 23 && bt 11 && bt 12 && bt 13 && bt 24 && bt 5
默认管理路径:/www/server/panel/data/admin_path.pl
默认端口:/www/server/panel/data/port.pl
默认ip:/www/server/panel/data/iplist.txt
宝塔的日志:/www/server/panel/logs/request
宝塔面板的密码加密方式:/www/server/panel/class/users.py
管理路径存放于/www/server/panel/data/default.db
在users表中可以得到用户名和加密后的密码
在config表中可以得到mysql的root密码
PermissionError: [Errno 1] Operation not permitted: '/www/server/panel/config/basic_auth.json': chmod 777 xxx.json或者chattr -i xxx.json然后rm -rf xxx.json
查看端口:cat /www/server/panel/vhost/nginx/dbshop.com.conf |grep listen

image-20230813154623295

老套路,看日志,找后台,绕密,顺便把navicat也连上

image-20230813154909872

image-20230813154841752

image-20230813155013208

image-20230813155341864

导入数据库数据,然后找报错

image-20230813155657224

image-20230813155745432

他这里有中英文对照,所以要用英文再找一遍,如果你熟悉Thinkphp架构的话也可以直接找登录逻辑

image-20230813155906189

public function login($username, $password, $keeptime = 0)
    {
        $admin = Admin::get(['username' => $username]);
        if (!$admin) {
            $this->setError('Username is incorrect');
            return false;
        }
        if ($admin['status'] == 'hidden') {
            $this->setError('Admin is forbidden');
            return false;
        }
        if (Config::get('fastadmin.login_failure_retry') && $admin->loginfailure >= 10 && time() - $admin->updatetime < 86400) {
            $this->setError('Please try again after 1 day');
            return false;
        }
        if ($admin->password != md5(md5($password) . $admin->salt)) {
            $admin->loginfailure++;
            $admin->save();
            $this->setError('Password is incorrect');
            return false;
        }
        $admin->loginfailure = 0;
        $admin->logintime = time();
        $admin->loginip = request()->ip();
        $admin->token = Random::uuid();
        $admin->save();
        Session::set("admin", $admin->toArray());
        $this->keeplogin($keeptime);
        return true;
    }

改为

if ($admin->password == md5(md5($password) . $admin->salt))

image-20230813160230179

image-20230813160251482

102.请分析服务器,给出用户John共提了几次会议预约申请,通过了几个?[答案格式:1,1][★★☆☆☆]

image-20230813160501282

103.接上题,用户John哪个时间段的会议预约申请次数最多[答案格式:2000-01-01 00:00-00:00][★★☆☆☆]

image-20230813160548395

104.请分析服务器,给出用户Harvey预约了什么时间的会议?[答案格式:2000-01-01 00:00-00:00][★★☆☆☆]

image-20230813160610020

105.会议管理系统的后台登陆地址是[答案格式:www.baidu.com:8080/login.php][★★☆☆☆]

上面已经找到了

hy.paofen.com:8085/dkewl.php

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值