2024精武杯复现服务器和APK功能分析
第二部分:服务器取证
1. 请对所给服务器检材进行分析,请 写 出 管 理 员 安 装“mdadm-4.1-9.el7_9.x86_64”的时间?(答案格式:18:18:18)
时间是:2022-2-24 13:13:01;加12个小时是因为他是PM下午,所以要加。
该题最重要的就是服务器的搭建,题目给了四个盘,其中server4.E01为系统盘,其他三个为数据盘,可以用火眼工具RAID重组工具重组一下
再创建虚拟机,系统是Linux系统
然后打开,打开后可以用finalshell进行连接,需要修改/etc/hosts.allow文件的内容,把8.8.8.8改成all,就可以连接。
2. 请对所给服务器检材进行分析,请写出宝塔默认建站的目录是什么?(答案格式:/abc/def)
输入bt(宝塔的缩写),可以看到宝塔面板命令行
需要看默认建站的目录,输入14查看面板默认信息
给了我们外网地址和内网地址以及内网的账户和密码,访问后尝试登录,但是密码错误
输入5修改密码
尝试登录,登录成功
可以看到根目录是/data
3. 请对所给服务器检材进行分析,请写出ip为192.168.157.1的机器登陆失败的时间是什么时候?(答案格式:xxxx-xx-xx xx:xx:xx)
Linux lastb 命令用于列出登入系统失败的用户相关信息。
单独执行 lastb 指令,它会读取位于 /var/log 目录下,名称为 btmp 的文件,并把该文件记录登入失败的用户名,全部显示出来。
输入lastb命令
所以是2020-10-9 16:47:29
4. 请对所给服务器检材进行分析,写出网站的数据库root帐号密码?(答案格式:xxxx)
当我们查看/data默认目录的时候发现下面什么都没有,对磁盘进行分析
输入:fdisk -l
/dev/sdb即为raid重组后的数据盘,将其挂载到/data
最后打开database.php。cd 打开目录,cat打开文件,
但该php文件的代码是乱码,导入出来后进行处理
结果:
可以看到密码是hl@7001
5. 请对所给服务器检材进行分析,请分析网站后台管理员帐号的加密方式(答案格式:xx($xx.xxx($xxx))
要管理员的账号加密方式,可以把设置管理员的代码导出来看
可以看到admin是经过函数Adminservice中的Adminsave
打开文件包,搜索密码
找加密密码字样,可以看到加密格式:md5($salt.trim($pwd))
6. 请对所给服务器检材进行分析,网站首页友情链接中的“弘连网络“的更新时间是什么时候?(答案格式:xxxx-xx-xx xx:xx:xx)
2023-02-16 15:02:29
可以用filelocatorpro来搜索源代码
可以看到upd_time修改时间
7. 请对所给服务器检材进行分析,网站后台管理页面入口文件名是什么?(答案格式:xxx.php)
4008003721.php
在面板日志可以看到重命名为4008003721.php,然后又访问了一次
8. 请对所给服务器检材进行分析,网站数据库备份文件的sha256的值是多少?(答案格式:a656ac5f9e9d3bc2915aec31a5dfd0bd3bd3ef1ac497016dafae43669d7d6d22不区分大小写)
可以看到默认备份目录
/data/backup
查看
要注意你必须把/dev/sdb挂载到/data
又shop1.sql文件,该文件就是备份文件
但在火眼里有zip文件,该文件才是真正的备份文件,计算sha256值
9DEDE75E455A7C4C5CC4B61E41570ADF82AF25251C5FD8456A637ADD864B0AF0
9. 请对所给服务器检材进行分析,网站数据库备份文件的解压密码是多少?(答案格式:xxxxxxx区分大小写)
将压缩包导出到外面,并发现一个密码字典.w0rd.txt
用passwarekit爆破密码,得到密码:22Ga#ce3ZBHV&Fr59fE#
10. 请对所给服务器检材进行分析,商城中“弘连火眼手机分析专用机MT510”商品的原价是多少?(只填写数字,精确到小数点后2位:9999.99
本题需要将解密的sql文件还原到数据库中,然后在后台页面搜索关键字MT510,这样才能检索到答案
bak分析
1. 请分析1.备忘录.apk反编译出的文件中,正确答案在哪个文件里?
第一题问正确答案在哪里,那么什么是正确答案,往后看发现应该是说第三题的flag
先做第三题后得到答案,在代码里搜索答案:
SEx7ZDBiMjA1OGEtYWMyOS0xMWVkLTgwN2YtYWNkZTQ4MDAxMTIyfQ==
所以答案在:activity_main.xml
2. 请分析1.备忘录.apk并找到程序中的主activity是?(答案格式:com.tencent.mm.activity)
用gda打开,查看baseinfo
可以看到main activity:
com.hl.memorandum.MainActivity
3. 请分析1.备忘录.apk并找到程序中的flag值(答案格式:HL{66666666-1-1-1-1})
第一题就做过了,在雷电APP智能分析中运行该应用就会得到一串base64编码
解码后得到flag
4. 请分析2.easyapk.apk中SharedPreferences配置文件的名称(包括后缀)是什么?
首先还是模拟器运行看看,但需要密码。
GDA反编译,来到这个com.hl.easyapk.MainActivity
可以看到先定义了5个数
然后对这5个数进行判断。
str1通过创建一个cache对象并调用该对象的getCacheD()方法来获取数据
str2通过创建一个extCache对象并调用该对象的getExtCacheD()方法来获取数据
str3通过创建一个files对象并调用该对象的getFilesD()方法来获取数据
str4通过创建一个extFiles对象并调用该对象的getextFilesD()方法来获取数据
str5通过创建一个prefs对象并调用该对象的read()方法从SharedPreferences获取数据
找到prefs对象
可以看到定义了myprefs
去模拟器文件管理搜索
所以文件是myprefs.xml
5. 请分析2.easyapk.apk并找到程序中的flag值(答案格式:HL{66666666-1-1-1-1})
从刚刚的判断入手
public void onClick(View view){ sha osha = new sha(); String result = "HL{"+(sha.encrypt(this.val$str1+this.val$str2+this.val$str3+this.val$str4+this.val$str5)).toLowerCase()+"}"; MainActivity$1 tthis$0 = this.this$0; tthis$0.key = tthis$0.keyText.getText().toString(); String str = "答案错误,继续努力!"; if (this.this$0.key.length() != 40) { Toast.makeText(this.this$0, str, 1).show(); } if ((result.substring(0, 11)+"-"+result.substring(11, 15)+"-"+result.substring(15, 19)+"-"+result.substring(19, 23)+"-"+result.substring(23, 36)).equals(this.this$0.key)) { Toast.makeText(this.this$0, "答案正确!", 1).show(); }else { Toast.makeText(this.this$0, str, 1).show(); } return; } }
大体意思就是MD5加密后校验。MD5是字符串。
用字符串相等判断,脚本运行后就会给出flag
HL{55c99ed4-d894-ae59-3a3b-6fe3eed793e7}
6. 请分析3.verify.apk,该程序中所使用的AES加密KEY值为
有了前面的经验就知道用GDA打开,找到mainactivity
他给了tPbnK29ENaqgPANeD1Hud3KyiS4uf8oaSa0b6ldRDHs=
就是要把加密后的之和他作比较,而且是AES加密。
也就是说当我们对tPbnK29ENaqgPANeD1Hud3KyiS4uf8oaSa0b6ldRDHs=进行AES解密后就是
对它进行ACE脚本
可以看到key:thisisyouraeskey
7. 请分析3.verify.apk并找到程序中的flag值(答案格式:HL{66666666-1-1-1-1})
通过解密得到所需的密钥
Whose key am I ?
在assets下面有一个7z文件
用压缩软件拖到桌面,更改后缀为7z,在解压就可以得到flag
8. 请分析4.easyjni.zip,压缩包中数据库的解密秘钥为
66d6ad256b0b03143e5571276bcebfc756a8fc0f7322b31ee8a8a2e992cbce37