77.请分析服务器,给出NAS服务器系统账号密码?[答案格式:xx@xx][★★★☆☆☆]
78.请分析服务器,给出NAS服务器的版本信息?[答案格式:xx-xx-xx][★★☆☆☆☆]
配个网先,仅主机模式
79.请分析服务器,给出NAS服务器内用户SMB的邮箱?[答案格式:xx@xx][★★☆☆☆☆]
80.请分析服务器,给出NAS服务器系统告警服务使用的邮箱?[答案格式:xx@xx][★★☆☆☆☆]
81.请分析服务器,给出NAS服务器内存储池名?[答案格式:xxx][★★☆☆☆]
82.请分析服务器,给出NAS服务器内有几个数据集和几个Zvol?[答案格式:0,0][★★★☆☆]
依次类推,答案为2,3
83.请分析服务器,给出该NAS服务器存储监听IP和端口?[答案格式:192.168.1.1:8080][★★★☆☆]
84.请分析服务器,给出NAS服务器内iSCSI目标为web的连接所使用的启动器组ID?[答案格式:xx][★★★☆☆]
85.请分析服务器,给出web服务器连接NAS服务器所使用的iqn?[答案格式:iqn.xxx][★★★☆☆]
86.请分析服务器,给出web服务器连接NAS服务器所使用的账号和密码?[答案格式:root/123][★★★★★]
87.请分析服务器,给出redis所使用的配置文件?[答案格式:/home/1.conf][★★☆☆☆]
尝试开启虚拟机,失败,没有虚拟化
内存开大点,全部启起来
教你如何破解 Centos 7 的 root 密码 | 《Linux就该这么学》 (linuxprobe.com)
如何开启或关闭SELinux_云服务器 ECS-阿里云帮助中心 (aliyun.com)
虚拟机–WEB–开启–VNC–进入单用户模式–关闭SELinux–重启–进入单用户模式–修改root密码–vi /etc/passwd 修改root shell为/bin/bash–进入系统
ctrl+x进入单用户
1 2
| chroot /sysroot vi /etc/selinux/config
|
重启就ok了
绕密后xshell连接
88.请分析服务器,给出跑分网站后台根目录?[答案格式:/xx/xx][★★★☆☆]
/www一看没有,应该是要挂载上去的,结合前面题目的共享服务
先开启iSCSI
只有sdb1是有数据的,所以这里我挂sdb1到/www下
挂上去有数据了
Thinkphp站,那么根目录就是public
随便翻了一个配置文件就有了
90.请分析服务器,给出数据库root账号密码?[答案格式:password][★★★★★]
Shell脚本加密与解密-腾讯云开发者社区-腾讯云 (tencent.com)
一眼加密
1 2
| tail -n +44 backup.sh >backup.gz gunzip backup.gz
|
91.请分析服务器,给出数据库备份文件存放路径?[答案格式:/xx/xxx][★★★★★]
上面都在了
92.请分析服务器,给出数据库备份文件解压密码?[答案格式:password][★★★★★]
上面都在了
93.请分析服务器,给出数据库备份文件间隔多少天会删除?[答案格式:1][★★★★★]
上面都在了
94.请分析服务器,给出数据库每天几点会执行备份操作?[答案格式:00:00][★★★☆☆]
1 2 3 4 5 6
| 这段命令是设置了一个定时任务,它将在每天的凌晨2点执行一个脚本文件。具体来说,命令的含义是:
- `0 2 * * *`:这部分是时间设置,表示在每天的第2小时(凌晨2点)执行任务。 - `sh /root/backup.sh`:这是要执行的命令,它会运行位于 `/root/backup.sh` 路径下的 shell 脚本文件。
因此,这个定时任务将会在每天的凌晨2点运行 `/root/backup.sh` 脚本,用途可能是进行备份操作。
|
95.请分析服务器,给出跑分网站后台用户余额总计?[答案格式:1000][★★☆☆☆]
下面是网站重构,首先恢复一下数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| #!/bin/bash
DB_USER="root" DB_PWD="3W.pa0fen.com" DB_IP="127.0.0.1" DB_PORT="3306"
DB_DIR="/usr/bin"
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 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 ) 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上
1
| tar -czPf - $BAK_DATE | openssl des3 -salt -k p@ssw0rd -out db_backup_${BAK_DATE}.tar.gz
|
加密逻辑是这样的,可推解密逻辑
1
| openssl des3 -d -salt -k p@ssw0rd -in db_backup_20230515.tar.gz| tar -zxv
|
得到sql文件
1 2 3
| service mysqld start mysql -u root -p source /data/mysql_back/20230515/paofen.sql
|
成功导入
顺便把mysql日志开启,这样有利于后面的网站绕密
1 2 3 4 5
| show variables like 'general_log'; show variables like 'general_log_file';
set global general_log = ON; set global general_log_file='/tmp/general.log';
|
回到web虚拟机,同样也是什么服务也没启
1 2 3 4 5 6 7 8 9 10 11
| 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服务
|
更改数据库配置文件
因为hosts里写了3w.paofen.db的地址,所以这里不用改
最后看nginx配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| 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; }
|
访问成功,但是连接失败
尝试关闭两台虚拟机的防火墙
再次访问
一片空白没有报错,应该是成功了
1
| cat /www/logs/admin.paofen.com.log | grep admin
|
找到后台地址
先用admin/123456梭一发
日志里没有,那么只能修改判断逻辑
1
| find ./ -type f -iname "*.php" | xargs grep "密码输入错误"
|
看路径知道应该是改第一个
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
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]; } }
|
修改为
1
| if (!empty($member['password']) && data_md5_key($password) != $member['password'])
|
成功登录
96.请分析服务器,给出跑分平台后台未处理的用户申请有多少个?[答案格式:1000][★★☆☆☆]
97.请分析服务器,给出会员聂鸿熙推荐人的姓名?[答案格式:张三][★★☆☆☆]
98.请分析服务器,给出跑分平台内用户银行卡所属银行共有几家?[答案格式:10][★★★★★]
或sql查询
99.接上题,请给出这些银行中用户数最多的银行名称?[答案格式:xx银行][★★★★★]
这道题csv有点慢了,不如sql
100.请分析服务器,给出用户“祝虹雨”通过审核的充值总额?[答案格式:10][★★★★★]
101.请分析服务器,给出该跑分团队可能的办公大楼有几个?[答案格式:1][★★☆☆☆]
对CSM虚拟机动手
宝塔的特征,宝塔一把梭准备好
1 2 3 4 5 6 7 8 9 10 11 12
| 解除宝塔限制: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
|
老套路,看日志,找后台,绕密,顺便把navicat也连上
导入数据库数据,然后找报错
他这里有中英文对照,所以要用英文再找一遍,如果你熟悉Thinkphp架构的话也可以直接找登录逻辑
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| 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; }
|
改为
1
| if ($admin->password == md5(md5($password) . $admin->salt))
|
102.请分析服务器,给出用户John共提了几次会议预约申请,通过了几个?[答案格式:1,1][★★☆☆☆]
103.接上题,用户John哪个时间段的会议预约申请次数最多[答案格式:2000-01-01 00:00-00:00][★★☆☆☆]
104.请分析服务器,给出用户Harvey预约了什么时间的会议?[答案格式:2000-01-01 00:00-00:00][★★☆☆☆]
上面已经找到了
hy.paofen.com:8085/dkewl.php