2022长安杯 2022

2022长安杯(write up)

围绕 2022长安杯 的公开复盘与解题记录。

作者:xxdecayxx 发布日期:2026-06-08 25 次阅读

检材一(服务器)

ssh 连接时,网段要修改和服务器一个 ip,不然连接不上

1. 检材1的SHA256值为(大写)

直接计算

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

172.16.80.100

或者仿真使用 last 命令

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

** 7.5.1804**

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

172.16.80.133

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

输入 last,可以看到很多 jar 包在 /web/app/

输入 <span class="ne-text">last</span>命令可以得到​系统的登录历史记录​**,包括所有用户的登录、登出、重启和关机信息。**

或者输入 history | grep jar 来过滤 jar 文件

或者在火眼历史命令里面看

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

想 ssh 连接,先在虚拟机修改一下 nat 的网段为 172.16.80.x

然后就可以连接了,不然会连接失败

然后输入 history,查看终端历史,找到可能的 jar 包

一个个启动,查看监听端口

可以看到,在 cloud.jar 这里监听端口是 7000

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

在检材二直接就看到了 9090

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

方法一:重构网站

在 history 的这里,可以看到解压 web.tar 后,开始使用 npm 命令启动网站了

npm run dev是启动前端项目的开发服务器的命令。这是 Vue、React 等现代前端项目中最常用的开发命令之一。

ls ./可以看到跟目录就有 web.jar

但是不知道为什么我重构不出来

方法二:照片

再照片里面直接搜索 app

感觉就是第一个,用 cyberchef 看一下https://pan.forensix.cn/f/c45ca511c7f2469090ad/?dl=1,看这连接十之八九了

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

用 winscp 连接一下,用 finalshell 其他也可以

然后导出这个 admin-api.jar,逆向分析一下,用 jadx 打开

直接搜索 password 发现有点多

用正则表达式搜索一下包含 encrypt 和 password 的代码

.*encrypt.*password.*

MD5

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

看上题有个 MD5key 直接搜索一下

随便找一个 md5key 右键跳转到声明

问了一下 ai 这是啥

就是要搜索,记得勾选上****资源

XehGyeyrVgOV4P8Uf70REVpIw3iVNwNs

检材二(电脑)

先用服务器第二题给的密码解压一下

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

135790

2. 检材2中,除检材1以外,还远程连接过哪个IP地址?并用该地址解压检材3

**看远程连接工具 xshell **

第一个 172.16.80.128

3. 检材2中,powershell中输入的最后一条命令是

ipconfig

4. 检材2中,下载的涉案网站源代码文件名为

** 能看到有三个,不确定是哪个.**

但是****ZTuoExchange_framework-master.zip这个东西和前面识别的二维码下载的东西是几乎一样的,所以就可以确定是这个

5. 检材2中,网站管理后台root账号的密码为

root

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

这个仿真简单一点,仿真后终端输入<span class="ne-text">wsl -l</span>即可

Ubuntu 20.04

或者在历史 ssh 记录里面,都是Ubuntu20.04 的命令

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

8.0.30

8. 检材2中,上述数据库debian-sys-maint用户的初始密码是

搜索 mysql,找路径在 etc/下的,一般这种初始密码都在这里面

ZdQfi7vaXjHZs75M

检材三(服务器)

用密码解压一下

1. 检材3服务器root账号的密码是

在电脑的 xshell 里有 ssh 记录<span class="ne-text">h123456</span>

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

sudo netstat -lntup | grep ':33050',刚开始过滤的时候找不到,然后想着可能在容器里,不过没有启动

systemctl start docker

docker-proxy

**该端口实际上是 Docker 容器将内部的 MySQL 默认端口(3306)映射到宿主机的 33050 端口,由 **<span class="ne-text">docker-proxy</span>进程负责转发监听

docker-proxy

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

Postgresql

Redis

Oracle

MongoDB

**在火眼上可以确定,是 **redis 和 mongodb

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

这个在当时的 admin-api.jar 包里面

shhl7001

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

先进入容器里面docker exec -it mysql57(名称或者 id) /bin/bash

或者 docker exec -it mysql57 bash

然后问了一下 ai,说一般在 /var/lib/,确实是

/var/lib/mysql

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

docker exec 8eda4cb0b452 mysql -uroot -pshhl7001 -e "SHOW DATABASES;"这个命令是直接查看有什么数据库,不需要进入容器或登录后再输入查询语句,很方便省去麻烦

但是问了 ai 说是这都是自带的数据库

看了其他师傅的 wp,才知道可以直接从那个图片看出来

b1

spring.datasource.url=jdbc:mysql://172.16.80.128:33050/b1?characterEncoding=utf-8

在 JDBC URL 中,//后面跟着 IP,端口 33050后面紧跟的 b1 就是你的数据库名称(Database Name)

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

可以这么连数据库

然后show VARIABLES like "%log%"查看 MySQL 中所有与“日志”相关的设置

找到 general_log

**只要 **<span class="ne-text">general_log</span>处于开启状态(ON)mysql中所有操作都会被保存在<span class="ne-text">general_log</span>

可以看到是开启的,然后日志位置也有了/var/lib/mysql/8eda4cb0b452.log

导出日志到容器外面/web 下

docker cp 8eda4cb0b452:/var/lib/mysql/8eda4cb0b452.log /web

然后查看并过滤一下 update 字符串

cat /web/8eda4cb0b452.log | grep -i "update"

-i 是会略大小写

可以看到是三个

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

跟上一题一样的思路不过过滤一下 delete,有 28 个

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

之前连接过数据库,发现并没有 b1

这个直接在检材二中火眼分析出来的 b1 看 172.16.80.197

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

**直接翻数据库就行 **cee631121c2ec9232f3a2f028ad5c89b

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

可以看到 member 这个表里面有等级,但并不好统计

可以用火眼的数据库分析工具,点这个数据库分析

然后要填写路径

直接搜索 b1.db 没结果,那就是保存在文件夹里面了。

直接搜索 mysql,点最多的那一个

就是这个 b1

右键文件文件管理资源器打开,复路径,或者复制粘贴到桌面

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

318,989

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

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

检材四

将解压出来的文件直接用解压软件打开

可以看到一个 vmdk 文件,解压放到火眼里面分析

1. 检材4中,嫌疑人使用的安卓模拟器软件名称是

这个不知道可以直接都 npbk 文件,是夜神模拟器的备份文件,之前做题遇到过

夜神模拟器

2. 检材4中,“老板”的阿里云账号是

vx 里面

**forensixtech1 **

3. 检材4中安装的VPN工具的软件名称是

应该是这个

4. 检材4中,上述VPN工具中记录的节点IP是

38.68.135.18

5. 检材4中,录屏软件安装时间为(格式2021/07/19 11:50:27)

2022/10/19 10:50:27

6. 检材4中,上述录屏软件中名为“s_20221019105129”的录像,在模拟器存储中对应的原始文件名为

复制包名com.jiadi.luping 搜索

依旧选择 data 目录下的,数据多的

然后在数据库中找到了

0c2f5dd4a9bc6f34873fb3c0ee9b762b98e8c46626410be7191b11710117a12d

7. 检材4中,上述录屏软件登录的手机号是

见上题18645091802

8. 检材4中,发送勒索邮件的邮箱地址为

这个哈士奇skterran@163.com

然后在 vx 聊天记录,可以知道这个人是灰色信仰。

检材 2 便是其电脑

综合分析

1. 分析加密程序,编译该加密程序使用的语言是

在检材 2 寻找加密程序,直接搜索 encrypt,应该是这个

然后看到是分区十,找一下有没有被加密的

先右键资源管理器,托给 die 分析

Python

2. 分析加密程序,它会加密哪些扩展名的文件?

从上一题可以看出来是 pyinstaller 打包,需要解包反编译

参考这个博客https://forensics.xidian.edu.cn/wiki/writeups/ChanganCup2022/#41

解包:被解包程序与pyinstxtractor.py 在同一目录

反编译:终端 pip install uncomply6

反编译结果,xls,docx,jpg,txt

jpg

png

zip

mp4

rar

7z

xls

docx

txt

mp3

3. 分析加密程序,是通过什么算法对文件进行加密的?

**xor(异或) **

4. 分析加密程序,其使用的非对称加密方式公钥后5位为?

公钥<span class="ne-text">u+w==</span>

5. 被加密文档中,FLAG1的值是(FLAG为8位字符串,如“FLAG9:QWERT123”)

把decrypt_file 放入 die 中,跟前面的一样

python3 pyinstxtractor.py decrypt_file.exe(解包)

uncompyle6 decrypt_file_1.pyc > 666(随意,生成在同目录).py(反编译)

可以看到密码是 4008003721

双击运行 decrypt_file,输入密码 4008003721,然后会自动解密同目录的****数据下载地址.docx_encrypted

注意****数据下载地址.docx_encrypted 必须在同目录

打开解密的文件是这个,拿到 flag1

TREFWGFS

6. 恶意APK程序的包名为

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

这个是检材一的 apk 下载地址,已经失效了。

本来应该可以下载出来的,然后直接导入雷电 app,自动分析出来包名

<span class="ne-text">cn.forensix.changancup</span>

7. APK调用的权限包括

这个的话,雷电 app 也是自动会分析出来的,完全不需要动脑

READ_EXTERNAL_STORAGE

WRITE_EXTERNAL_STORAGE

SEND_SMS

WRITE_CONTACTS

8. 解锁第一关所使用的FLAG2值为(FLAG为8位字符串,如需在apk中输入FLAG,请输入完整内容,如输入"FLAG9:QWERT123")

这个的话,肯定是要用 jadx 分析的。

然后看其他师傅的 wp,说是有壳​**,不过雷电 app 可以一键脱壳,也就形同虚设了**

然后全局搜索 flag​**,但其实****​雷电 app 自带会有一个展示可疑字符串,​**可以看到 enctypt,flag 等等字段

师傅们的 wp

flag2 几乎明文

**这里有个明显的对比,那么 flag2 就是 **MATSFRKG

9. 解锁第二关所使用的FLAG3值为(FLAG为8位字符串,如需在apk中输入FLAG,请输入完整内容,如输入"FLAG9:QWERT123")

https://www.cnblogs.com/WXjzc/p/16842778.html

TDQ2UWP9

9.10 题有点难,我这里给出大佬的 wp,自己就先不复现了。

10. 解锁第三关所需的KEY值由ASCII可显示字符组成,请分析获取该KEY值

https://www.cnblogs.com/WXjzc/p/16842778.html

<span class="ne-text">a_asd./1imc2)dd1234]_+=+</span>