loading...
Featured image of post 獬豸杯2025取证总结

獬豸杯2025取证总结

比较有收获的一集

不愧是经常做题的人出的题目,水平确实高,题目质量相比去年也提升了很多很多

美中不足的是我没看见案件背景,感觉就是纯粹的做题

题目覆盖的知识范围很广,虽然不深,但是都要懂一点,特别是在手机和计算机取证的时候,着实是几步一卡

服务器取证方面,由于之前做的比较多了,除了k8s坏了做不了部分题目、网站抽风不能访问导致前端网页看不了只能后端php+mysql进行麻烦的分析之外也没遇到什么困难,比较顺利

总之学到了不少,非常值得做的一套题

手机

1.登录的直播APP的IDX是什么?[标准格式:25236541]

手机里面一共有两个和直播有关的APP:

image-20250907202834384

分辨方法可以根据第二题,看看哪个平台有等级就行

我觉得比较好的办法是注册个账号进去看一眼谁的等级是有"碌碌无为"的,不过这种软件毕竟有很大风险,就算了,当我知道了

答案肯定是不太正经的烟雨直播

记住包名,在文件系统里面找到对应的包文件,然后过滤数据库,id大概率是在本地

因为不知道数据存储位置,只能一个一个看过去,最终在miao.db的login表里面找到了idx字段:

image-20250907202609060

35248617

2.目前直播的等级名称是什么?[标准格式:碌碌无为]

试了一下login里的密码,登录超时,大概率是加密存储的

如果上一题注册了账号,就能搜到这个家伙,也当我知道了

*出乎意料的解法

可以在小米手机的相册缩略图里面找到主页图片:

data.tar/media_435/0/Android/data/com.miui.gallery/files/gallery_disk_cache/full_size/e61ab074425cf3ee2cbc0fc97f448b7f88a359cf646f77a024b87a6d9c8f5d33.0

image-20250914161522611

这样一二两题都很快做出来了

一无所有

美亚杯2022找快递单也用到了这一招

3.地图中哪座山有绝望坡?[标准格式:太行山]

image-20250907234750053

武功山

4.手机的历史SIM卡中,中国电信卡的IMSI是多少?[标准格式:123456789]

image-20250907234027675

460115143563428

5.1月22日16:40的会议号是多少?[标准格式:xxx-xxx-xxx]

转换时间戳,因为没有毫秒,就取前面八位数进行搜索

在搜索结果里面看见一个"startTime"字段:

image-20250908003605107

点进去一找,果然有meetingNum字段,并且符合格式位数,应该就是他了:

image-20250908003522534

312118071

app仿真

这是一种很好的办法,简单来说就是还原app状态,直接进去看各种数据,而不是分析文件

先导出apk,我更建议跳转到源文件导出而不是直接点击右上角的导出:

image-20250919131653410

image-20250919131807234

直接拖入模拟器就能安装了

之后在火眼找到检材里面的对应文件,导出整个包:

image-20250919130644911

注意一定要选择按照原目录结构:

image-20250919130714619

导出后,把com.netease.yunxin.meeting整个文件放进共享文件夹

💡 Tip

共享文件夹如何打开:

image-20250919113644193

image-20250919113709012

虚拟机内的共享目录默认是/mnt/shared/Pictures

替换掉/data/data路径下的同名文件夹(这里使用mt管理器):

image-20250919131304329

长按进行操作:

image-20250919131401001

给所有文件进行复制并替换操作,然后打开就行了,可能要多等一会

搞笑的是我这里打开强制要求更新:

image-20250919132218526

更新之后再进行一次替换,这次就成功了:

image-20250919132826640

在历史会议里面能找到会议号:

image-20250919132753132

312118071

6.网易会议中个人会议号是多少?[标准格式:2523654199]

如果app仿真了,很快就能找到:

image-20250919132521534

2679823922

*其实也可以在之前找会议号的lolg文件里面找到,具体看11题

7.记账软件中一共记了几笔?[标准格式:9]

*这一题同样也能使用app仿真快速做出

我服了,记录数据的数据库文件竟然不是任何一个常见后缀名

照常过滤了.db/.sqlite。。。。还有.log和.xml,都没发现任何记账的记录

最后在data.tar/data_248/com.csmountainaccount.easy/databases目录下发现,有些识别成"文件"的文件也是数据库:

image-20250908205354045

这个识别出来就是sqlite,真是离了大谱了

image-20250908205334591

总之在里面找到了记账记录:

image-20250908205455032

4

*多刷新几次发现他又变成识别出来是数据库文件了,靠,或许以后应该匹配文件名有.db之类的

8.谁给了机主100000?[标准格式:某某]

同上题数据库:

image-20250908210118596

勇哥

9.聊天软件是否需要手机号登录?[标准格式:填写是或者否]

找半天不知道聊天软件是什么,直接导出问ai,说盒子IM是聊天软件,查了一下还真是:

image-20250908214837346

同样也能搜索到登录需要手机号

10.机主的给对方的活有多少钱?[标准格式:53100]

已经有经验了,直接找databases数据库文件夹,第一个就存有聊天记录,果然又是无后缀的:

image-20250908220016065

复制出来看比较方便:

image-20250908215948021

30000

11.机主的手机号是多少?[标准格式:13652492155]

感觉之前找东西的时候见过,但是怎么也想不起来了

现在找不到,只能猜测几个字段硬搜:

image-20250908221003935

事实证明搜不到,怎么会搜出这么多来的

*实际上,电话号也可以在之前找会议号的log文件里面找到

导出搜索phonenumber/number:

image-20250919133428390

17751125237

而且旁边就是第六题要找的个人会议号,我们也终于知道了他的字段名是privateMeetingNum

2679823922

12.手机的IMEI1后四位是多少?[标准格式:2536]

image-20250908221307918

1055

13.手机上一共有几个地图软件?[标准格式:9]

一个个看软件列表就行了,事实证明搜索也能搜出来:

image-20250908221727534

百度地图、蔚蓝地图、白马地图

3

不过火眼应该能解析百度地图数据啊,为什么没有呢

计算机

1.网卡的Mac地址是多少?[标准格式:XX-XX-XX-XX-XX-XX]

火眼识别出来的网络适配器有两张物理网卡,没办法分辨:

image-20250908230121371

仿真后查看:

image-20250908224129321

00-0C-29-3F-32-D4

2.系统内部版本号是多少?[标准格式:12345]

image-20250908222723821

18363

3.计算机系统开机密码是多少?[标准格式:根据实际值填写]

image-20250908230143168

WAXD9128@ 

4.分析计算机检材中手机流量包,请问黑客虚拟身份的密码是什么?[标准格式:x123]

在文档里面找到.saz流量文件,这是Fiddler的流量包:

image-20250908232755584

我们打开,可以找到login的页面请求,里面有password:

image-20250908232550140

a12345678

5.分析计算机检材中手机流量包,请问黑客人员使用的夜神模拟器的手机型号是什么?[标准格式:XX-X123X]

搜索yeshen,在这些流量里面查看http报文标头:

image-20250908235420913

让ai分析一下就行:

image-20250909000742802

SM-G955N

6.分析计算机检材中手机流量包,请问黑客看视频的时间是几月份?[标准格式:1]

搜video,找到的host是抖音,原始数据里面有时间:

image-20250909003919819

5

7.分析计算机检材中手机流量包,请问“天戮宇宙”出自哪个小说平台?[标准格式:番茄小说网]

搜索book,发现传输类型是image的报文,里面就有天戮宇宙:

image-20250909005221477

依旧搜索:

image-20250909005434198

阅文集团

8.请在手机模拟器中勒索apk软件的sha256值是什么?[标准格式:全小写]

被摆了一道,在计算机仿真里面打开夜神模拟器会直接卡死,需要做一些准备工作

首先要保证虚拟化功能是开启的,在任务管理器性能页面查看:

image-20250909205810810

其次,需要开启vmware的虚拟化(默认关闭):

image-20250909203622745

之后为了防止冲突,还需要关闭本机的虚拟化服务:

image-20250909205656592

重启电脑,再次进入计算机仿真,打开夜神模拟器:

我的天啊,怎么还是报错

最终找到了解决办法,打开管理员权限cmd输入:

bcdedit /set hypervisorlaunchtype off

显示操作成功之后重启电脑,这样就成了,坏消息是再也用不了WSL了

更坏的消息是成功进入模拟器也无法找出勒索软件,模拟器似乎是新建的?

尝试在火眼里面导出.vmdk直接分析,也有问题:

image-20250909220222141

*正确的做法是寻找夜神模拟器的备份文件(32位是.npbk,64位是.anpbk)

image-20250918212340485

导出后改成zip解压,就可以得到这个备份文件的.vmdk:

image-20250918212517597

也可以下载夜神模拟器然后导入,下面是官方文档的介绍:

image-20250918212805920

把这个.vmdk文件导入火眼,就能得到真正的目标分析的模拟机虚拟磁盘镜像了,也就能找到勒索软件,因为其他两个怎么也不像勒索软件吧,能搜到都是正经的:

image-20250918213040826

把这个软件导出计算sha256即可

340bd211955996c5d62bbde94a0bed4eb3a7965b23af52114991bca02346928e

9.接上题,请问勒索apk软件的解锁密码是什么?[标准格式:qwer.com]

先导入雷电模拟器看看怎么个事:

image-20250918213340145

要我们打开无障碍权限,也是勒索软件的必经之路了:

57fd59bbd861ee19f9f07180419644d0

不是很友善啊

这种勒索软件一般是把解锁密码写死在代码里的,把apk导入jadx,全局搜索密码关键字,可以找到一个应该是密码的东西:

image-20250918213616457

输入anzhuo.com试一下,果然解除勒索锁屏了

anzhuo.com

10.signed_xz.exe程序SHA1后6位是多少?[标准格式:524c62]

搜一下直接计算:

image-20250909220432592

8955B1

11.signed_xz.exe程序中的函数名为curl_version_info的函数地址是多少?[标准格式:0c6875c2]

使用IDA分析,左侧搜索函数名:

image-20250909221131834

0x004393C0

题目0c应该是打错了吧

12.signed_xz.exe程序中节名为.reloc的虚拟地址是多少?[标准格式:0c526n5624]

很奇怪,我的IDA无法找到.reloc节:

image-20250909222132740

换成别的PE分析软件(这里使用CFF)就可以:

image-20250909222204837

0x035B5000

13.请分析检材中澳门新葡京APK其包名是?[标准格式:com.abcd.xxx]

导出用雷电app分析:

image-20250909223414624

com.suijideszzuiji.cocosandroid

14.请分析检材中澳门新葡京APK是否加固,加固则说明是什么加固?[标准格式:360加固宝或未加固]

在jadx和DIE检测下都没发现加壳线索,最后发现原来雷电分析的源码分析模块直接就有:

image-20250909224857566

未加固

15.请分析检材中澳门新葡京APK是否会往手机的SD卡中写入数据,则该权限的名称是?[标准格式:android.xx.xxx]

依旧雷电:

image-20250909225105416

android.permission.WRITE_EXTERNAL_STORAGE

16.请分析检材中澳门新葡京APK登录的api地址。[标准格式:https://www.baidu.com/api/login]

不知道怎么做,代码量太大了,调了几个可疑的问ai也没有结果

*需要抓包

由于雷电模拟器+雷电智能分析app抓包;总是闪退(暂未找到解决办法),所以得换个办法

这里选择跟着网上教程走一遍,使用Fiddler对app进行抓包

⚠️ Warning

接下来最好全程将电脑连接至手机使用流量

Fiddler设置与证书导出

下载好fiddler之后,点击工具(tools) -> 选项(options):

image-20250918214454843

勾选解密https通信、忽略证书服务器错误,再点击动作,把根证书导出到桌面:

image-20250918214743984

这时候电脑桌面就会生成一个证书安装器了,名称应该是FiddlerRoot.cer:

image-20250918214833376

双击打开,一路默认点击确定,直到安装成功:

image-20250919093449562

然后切换到连接(connections)选项卡,设置一个不冲突的端口,再选上允许远程计算机连接:

image-20250918215057439

点击确定,注意也要把之前https选项卡的选择保存,然后重启fiddler,保持不要关闭

⚠️ Warning

你可能会发现现在本机访问网站会提示证书不信任/环境不安全,这是正常的,因为fiddler正在监视你

把fiddler关掉,一切就会恢复正常,不用担心

雷电模拟器代理设置

打开雷电模拟器,把网络桥接模式打开(会自动下载驱动),注意ip设置自动获取就好:

image-20250918215435344

开启root权限:

image-20250918220829824

重启模拟器让上面的设置生效

不同版本的雷电模拟器编辑网络代理的方式不同,网上大部分教程是在模拟器内的系统设置里(不是雷电模拟器设置)对网络长按左键,就能进入“修改网络”进行代理设置

不过我现在的版本不是这样,不同还是比较大:

image-20250919091609402

image-20250919091641648

image-20250919091659742

image-20250919091724268

image-20250919091742888

image-20250919091808977

image-20250919091835594

image-20250919092112137

保存设置之后,下面来给模拟器安装证书

雷电模拟器证书安装

打开共享文件夹,把之前导出的FiddlerRoot.cer放进去:

image-20250919113644193

image-20250919113709012

接着进入设置 -> 安全性和位置信息 -> 加密与凭据 -> 从SD卡安装证书:

image-20250919113850223

切换到共享文件夹(可以在上面的工作文件打开安卓文件夹查看位置,默认是/mnt/shared/Pictures):

image-20250919114057447

image-20250919114120661

image-20250919114137827

我已经放进去了,点击安装:

💡 Tip

如果你放进去了却没有,重启一下,或者看看是不是有多开的雷电模拟器,被那个模拟器识别了

image-20250919114242895

名字随便取:

image-20250919114422857

设置一个绝对不会忘记的锁屏密码:

image-20250919114459452

image-20250919114516369

提示已安装好之后,打开mt管理器(自己下载,这个文件管理器比自带的好用的多)

把安装好的证书挪到系统目录中(/data/misc/user/0/cacerts-added/ -> /system/etc/security/cacerts/):

image-20250919115150566

长按左侧下载的证书,点击移动到右侧:

image-20250919115230389

但你大概率会遇到以下问题:

image-20250919115802471

这是因为system分区没有解锁的原因,需要在设置里解锁:

image-20250919120005463

保存设置后重启,就能执行移动操作了:

image-20250919120113643

之后在用户凭据下就能看见我们安装好的证书:

image-20250919120229162

image-20250919120211907

+++

还有一种更加便捷的安装证书的办法

打开模拟器内部浏览器,访问刚刚设置的ip+端口,会显示Fiddler的回显服务:

image-20250919094553689

💡 Tip

如果这一步出错,可以从以下几个方面排查问题:

1.更换本机网络连接(换了之后ip会变,需要重新设置ip)

2.检查Fiddler是否开启

3.检查模拟器内的代理ip是否填写正确,端口号是否和Fiddler设置的一样

我们点击下载证书:

image-20250919095247903

之后的过程和上面一样,只不过是省去了我们在共享文件导入证书的步骤

不过我一点击下载证书就闪退,不知道为什么无法实现

+++

正式开始抓包

确保Fiddler是打开状态,模拟器里打开app进行访问,随便输入一个账号密码进行登录:

image-20250919122210683

之后搜索login,就能找到api地址:

image-20250919124910596

https://168js.bvocftd.com/ky188/member/memberManager/checkMobileLogin?v=0811739291780903 

还有很多这样的url:

image-20250919122457138

https://168js.bvocftd.com/ky188/member/memberManager/appValidCodeEnable?v=042253679277362566 

根据题目格式,这些并不是我们要的答案,看来得登陆成功:

image-20250919123548019

但是我并不能注册,也不知道为什么

之前做题目的时候点击登录会弹出图形验证码,这次点击之后什么也没有发生

总之就到这儿吧,正确答案如下,或许可以根据规律猜出来?

https://168js.bvocftd.com/ky188/member/memberManager/login

17.请分析检材中澳门新葡京APK其中关于腾讯运营商的服务留存了QQ号是?[标准格式:123456790]

很巧,之前分析上一题的时候复制了一段代码给ai(具体是org.cocos2dx.javascript.AppActivity),就这么问出来了:

image-202509092313439422

1108221663

18.请分析Navicat中root用户的密码是什么?[标准格式:@123Aa]

image-20250909233802639

(=3]Zwjt#W

服务器

1.该集群主节点操作系统版本是?[标准格式:100.100.100]

第一件事就是把三台服务器全部仿真

随便点开一个服务器查看网络配置信息:

image-20250910000803468

另外两台的配置也一样,这是使用了k8s

💡 Tip

K8s,也就是Kubernetes的缩写,是一个开源的容器编排平台,用来管理、部署和扩展容器化应用

进入仿真机,能看见001是master主节点,另外两个都是node工作节点:

image-20250910001131671

image-20250910001158036

image-20250910001221189

所以应该是001的操作系统版本:

image-20250910001301708

 7.9.2009

另外,我发现三台服务器都在192.168.2.0/24网段,查看后发现都是设置好的静态ip

image-20250913012027858

先改一下vmware的虚拟网络适配器,仅主机模式的设置关掉DHCP分配的功能,这样就能让他们保持原有的静态ip了:

image-20250913012352339

配置完后,它们服务应该就能正常使用了

2.该集群创建时间是?[标准格式:0000-00-00T00:00:00Z]

从这题开始到第五题,由于k8s打不开(似乎是证书过期了),没办法做

这部分应该就是些k8s的指令,后续学一下吧

3.该集群共有多少个命名空间?[标准格式:100]

4.该集群所有命名空间内总共有多少个pod?[标准格式:100]

5.请给出该集群所使用的cni网络插件及其版本?[标准格式:abc-V1.1.1]

6.其中打金平台的后台登录地址跳转文件是?[标准格式:abc.php]

从现在开始重组服务器

在火眼里面能看到工作节点1、2都安装了宝塔面板,由于不知道明文密码,我们分别登录两台服务器修改密码

输入bt,唤起宝塔面板命令行控制程序:

image-20250910174201499

宝塔面板网页控制程序的url通过bt default查看:

image-20250910174418291

一定要使用https访问(尽管没有证书)

进入之后,可以看见两台服务器都使用nginx各自托管了两个网站

我们当然可以直接查看配置文件来判断网站是什么,不过最好的办法还是亲自访问一下更快

先把nginx打开:

image-20250910143104637

nginx会通过配置文件里的server块的server_name字段参数来判断我们访问的时候应该加载哪一个网页,所以我们需要给自己的电脑HOST文件加上对应解析,这样访问的时候host值才会是域名而不是ip,才能正确访问网站

我这里使用utools插件加一下:

image-20250910202534973

但是很离奇的事情发生了,dns解析之后我无法访问这四个网站的任何一个

报错是502,服务器的问题,尝试很多方法都无法解决,甚至连错误日志都没有记录我的访问,百思不得其解

+++

*这里是写题之后补充的解答

⚠️ Warning

在询问前辈之后,给出了一个解决办法,但是为什么这样做可以、上面的方法不行,并不清楚,我查了很多资料也没有找到为什么

如果你知道,请留言,please!

在宝塔里面可以很方便给域名添加对应server块的listen端口(具体的ngixn配置原理:Nginx的server块 ):

点击想要配置的域名,进入域名管理,选择一个不会冲突的端口给他配置上:

image-20250918174244221

image-20250918174404127

添加成功之后直接用ip+端口访问,不需要添加host了:

image-20250918175018495

另外,要注意是否开启了网站对应版本的php-fpm

💡 Tip

PHP-FPM全称PHP FastCGI Process Manager,它是PHP的一个运行模式,专门管理多个PHP进程,和Nginx配合处理PHP请求

没有php-fpm,Nginx就没法执行.php文件,会直接报502

使用ps查看现有的后台进程:

ps -ef | grep php-fpm

image-20250918180441660

最好调用init脚本去管理,systemctl有些问题,会把stop的status也识别成active

注意在php-fpm后面加上版本号,也就是php-fpm-xx,这是宝塔管理多版本共存的手段:

/etc/init.d/php-fpm-74 start
/etc/init.d/php-fpm-74 restart
/etc/init.d/php-fpm-74 stop
/etc/init.d/php-fpm-74 status

image-20250918180552457

+++

换个办法,一个个查看底下的index文件

使用宝塔部署的网站源码被放在了/www/wwwroot,而更糟糕的是(对于我来说)网站使用的是ThinkPHP框架,这意味着index文件不再被放在当前网站根目录下(事实上那里也只有一个宝塔面板生成网站成功的页面),而是被放在了application目录下,更加难找了

好在四个网站的类型在后面的题目有提到:

打金平台、金瑞币平台,盲盒平台、借贷平台

我的办法是过滤index.html/.htm和default.html/.htm文件,因为可以在/www/server/panel/vhost/nginx/www.gsjksu2kig.com.conf路径下看到配置文件,里面有这样对root和index的定义:

image-20250911205256149

四个网站都是这样

但是我找第一个的时候就没办法判断,因为根本找不到欢迎页面,也有可能找到了但是网站logo被存储在某张图片里面,还有可能名称就是错误的

没办法,如果连图片一起看的话实在太多了,我试着翻了一下还找到一张没打码的身份证???所以还是看文字就好,相信index和default吧

先四个都看一遍,找找线索,然后统一确定

1.www.gSJKsu2kig.com:

image-20250911204958761

暂时不能分辨,但根据后面可以判断出来

金瑞币平台

2.www.mtbtsdafda.com

image-20250911211116032

前脚还在烦恼怎么和上一个区分呢,后面就来了答案

image-20250911211338953

打金平台

3.www.jiaoyoumf0up.com

这个网站很奇怪,除了宝塔默认的index之外再无别的了

不过它的index,php里面写了这样的东西:

include 'view/index.php';    // 如果没有 $mod,就加载默认首页

顺利的在view下找到了证据:

image-20250911212144279

盲盒平台

4.www.jiedai0rmr.com

这个也和之前不同,使用的是老版本的ThinkPHP框架

其实做到这里基本上也明了了,因为第一个网站根目录里找到的有挖矿和博彩的功能,怎么说也不可能在借贷平台里面加上挖矿的页面吧,而且网站名称就是借贷的拼音

*而且24题搞什么,直接题目就给出来了啊

不过还是找一下证据吧:

image-20250911213010860

嗯,其实感觉这个证据不太好,还不如前面的判断

借贷平台

ok,现在全都知道了

www.gSJKsu2kig.com :金瑞币平台

www.mtbtsdafda.com :打金平台

www.jiaoyoumf0up.com :盲盒平台

www.jiedai0rmr.com :借贷平台

回到题目,打金平台的后台登录地址跳转文件

其实我没指望grep搜出什么东西,比较login字符串太常见了,结果就是那么巧,最后一行是答案:

image-20250911214302404

实地考察,果真如此,原来就在根目录:

image-20250911214348463

WIdbdgd1Us.php

7.其中打金平台密码加密算法是?[标准格式:abc]

由上题可知打金平台为www.mtbtsdafda.com

在对应文件夹下找到三个可能和登录有关的东西:

image-20250910215659308

其中前两个是前台登录,里面有这样的代码:

'password' => I('password','','md5')

后面一个是后台登录:

'password' => I('password','','sha1')

不知道正确的是哪一个

8.其中打金平台中"13067137585"用户的累计产量有多少?[标准格式:100.00]

这题肯定是要连接数据库才能做出来的题目了

一个比较好的办法是本地使用navicat链接数据库,因为这个数据库只允许本地访问,直接连是连不上去的,必须要使用ssh隧道,这样才能假装是在本地访问的:

image-20250910233959488

可以选择使用宝塔找到的普通使用者的账户密码,也能选择使用root:

image-20250910233949525

不过root的密码不知道为什么总是登不进去,建议是重启数据库,加上–skip-grant-tables选项

另外,重启还能解决一个问题

如果直接使用宝塔面板管理数据库的话,会提示:

数据库服务器连接失败!
<pre>Can't connect to MySQL server on 'localhost' ([Errno 2] No such file or directory)</pre>

尝试在直接在这台服务器登录,也会报错"找不到/tmp/socket文件",和上面其实是一个原因:

这个服务器配置了默认使用unix socket作为连接方式,而套接字文件又被他搞不见了!

在本机navicat使用ssh隧道可以正常登录,因为它没有使用socket文件,而是用TCP端口(大概是这个原因)

解决办法之一是在连接的时候强制指定tcp:

mysql -u 用户名 -p -h 127.0.0.1 -P 3306

还有一种办法就是重启了,重启能让mysqld再次生成socket文件,正常使用socket(前提是设置里写了,这台服务器是写了的)

先停止mysql服务:

systemctl stop mysqld

不过我在做这一步的时候有问题,它不能完全清除后台的进程,所以要手动杀死进程

确认mysql进程pid:

ps -ef | grep mysqld

强制杀掉进程:

kill -9 [进程号]

到这里后重启,也不能使用mysqld直接启动,否则会报错:

2025-09-11T15:02:42.423175Z 0 [ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!

也就是说mysql不能直接以root用户启动,这是linux的安全设计,windows是没有的

正确启动方式是使用mysql_safe,这是linux里mysql自带的安全脚本,会调用mysqld并增加一些安全功能

上文提到root密码不能登录,所以加上–skip-grant-tables选项

此外,mysqld_safe本身是一个shell脚本,默认会在前台运行,把日志直接输出到终端从而会占用整个窗口,加上&后就不会了

最终重启命令:

mysqld_safe --skip-grant-tables &

重启后所有问题都消失了,/tmp/socket重现人间,无需密码就能登录root:

mysql -u root

宝塔的数据库管理面板也不报错,可以使用了

查看集群服务器的二号工作节点,会发现他的数据库也是存在这台一号机里面的:

image-20250911235434979

所以root登录好处多多啊

回到问题:打金平台中"13067137585"用户的累计产量有多少

我觉得需要结合前端网站分析,直接找数据库还是太难了

不过也有办法,就是找有哪个表里面同时包含用户id和累计产量,但表和字段毕竟不是中文,还是很哪找的

我直接看wp了,就是ds_order表:

image-20250911235934823

sql查询:

select SUM(already_profit)
from ds_order
where user = 13067137585;

image-20250912000249219

43853.21258852

修改sql密码

进入mysql后执行:

#使对 mysql.user 等权限表的直接修改立即生效
FLUSH PRIVILEGES; 

#为 root 在 localhost(仅本地连接)这个账户设置(或重设)密码为 123456
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

#为 root 在 host='%'(通配,允许远程连接)这个条目设置密码
ALTER USER 'root'@'%' IDENTIFIED BY '123456';

# 再次刷新
FLUSH PRIVILEGES;

这样就把root密码重置为了123456

之后正常登录即可:

mysql -u root -p 123456

mysql密码

**方法一:**运气好点在my.ini或者my.cnf里找到,先去搜一下这两个文件

**方法二:**去网站根目录下的配置文件里找,如果是java站点,就去找application,php网站可能在config.phpwp-config.php等等

**方法三:**内存取证

**方法四:**如果是docker容器搭建,可能会在Docker环境变量里(用命令envprintenv

**方法五:**bt面板里可能有数据库连接密码

**方法六:**去linux历史命令里找,里面有可能会有配置数据库的命令(用命令history或者查看~/.bash_history

9.其中打金平台会员组最高溢价比例是多少?[标准格式:10.00]

宝塔网页,文件 -> 文件内容搜索,搜索溢价比:

image-20250915182429429

发现存储在yjbl这个变量里面,继续搜索:

image-20250915182708192

也就是存储在数据库表member_group字段名yjbl,通过会员组的level来定位取值

找到这个表:

image-20250915182953747

1.70

10.其中打金平台会员推广人数最多的会员其姓名是?[标准格式:名字]

搜索推广,看到可疑的文件:

image-20250915183331905

打开找到人数处理的部分:

image-20250915183319242

推广人数存储在member表里,直推人数字段是ztnum,团队人数字段是tdnum

还是找到这个表:

image-20250915183655395

李奕欣

11.其中打金平台最早一次备份数据库的时间(Asia/Shanghai)是?[标准格式:2024-01-01-01:01:01]

在对象页面能看到ds_log记录了系统操作日志:

image-20250912000908757

时间是用时间戳的形式存储的:

image-20250912001209164

看不懂?哎🤓👆,这时候就可以用到我的时间戳转换工具了:

image-20250912001558581

可以看到时间是增大的,而表第8行就是最早的备份时间:

image-20250912001802926

2019-05-06 22:27:57

12.其中金瑞币(JINRUI COIN)平台图片上传平台是哪种类型?[标准格式:腾讯云ABC]

一个个找不现实,使用宝塔的文件内容搜索,相信好的编程人员会留下充足的中文注释的:

image-20250912002958380

点击编辑,打开看看:

image-20250912002940535

OSS\OssClient是阿里云对象存储OSS官方PHP SDK的命名空间

阿里云OSS

其实这个代码也没有限制上传文件类型,只是引入了think\Image

13.其中金瑞币平台手机直充接口是什么?[标准格式:http://xxx.xxx.xxx/xxx]

image-20250912003208955

打开就能看见:

image-20250912003246812

http://op.juhe.cn/ofpay/sinopec/onlineorder

14.其中金瑞币平台后台登录地址是?[标准格式:http://xxx/xxx/xxx.xxx]

image-20250912003844001

找到表单提交对象url:

image-20250912003831450

那就应该是:

http://www.gSJKsu2kig.com/admin/login/index

15.其中金瑞币平台中密码加密盐值是?[标准格式:AbC1d]

搜索中文盐搜不出来,搜到了好玩的东西:

image-20250912004700781

笑死了

原来要搜英文的salt:

image-20250912010209204

GWwRbMOPJYZCvE5gembG

16.其中金瑞币平台中交易手续费是百分之多少?[标准格式:100]

搜索手续费,发现是由变量$base_config的trade_sxf键控制:

image-20250912010821573

这个变量没有定义在这个文件,全局搜索一下:

image-20250912203244868

发现这样一行:

$base_config = Db::name('system')->field('value')->where('name', 'base_config')->find();

这段代码用的应该是ThinkPHP框架的数据库操作类

name():指定要操作的数据表,表名是system

field():只取出指定的这一列

where():加条件

find():只取一条记录(返回数组/对象)

也就是说这行代码等价于:

select value
from system
where name = 'base_config'
limit 1;

那么现在只要找出哪个数据库里面有system表就行了,对mysql的information_schema表查询:

select table_schema,table_name
from information_schema.tables
where table_name = 'system';

image-20250912214022627

额,返回结果却是空?那搜索列名:

select table_schema,table_name,column_name
from information_schema.columns
where column_name = 'value';

image-20250912214129562

虽然没有搜索到system表,但有一个wym_system表,事实上也的确就是这个表

这里涉及一个点:在ThinkPHP里,Db::name()并不是直接拿表名,而是会根据配置里的表前缀prefix拼接出来

我们搜索prefix可以看到:

image-20250912214318069

这里也就说明了表的前缀是由prefix指定的

搜索prefix,可以在database.php文件里面看见定义的前缀,正是wym_

image-20250912215408049

回到找到的wym_system,的确是有name为base_config的行:

image-20250912215632600

这里value存储的是一段PHP序列化的数据:

a:40:{s:6:"reg_zs";s:1:"0";s:8:"reg_zskj";s:12:"体验矿机";s:9:"reg_pzskj";s:0:"";s:4:"sign";s:4:"0.01";s:4:"zjcj";s:1:"0";s:9:"trade_sxf";s:2:"36";s:6:"kj_sxf";s:1:"5";s:8:"cn_money";s:4:"0.16";s:11:"trade_price";s:4:"0.83";s:9:"add_price";s:4:"0.04";s:9:"buy_count";s:1:"2";s:8:"ykcz_sxf";s:2:"30";s:8:"hfcz_sxf";s:2:"30";s:7:"btc_sxf";s:2:"30";s:10:"sell_count";s:6:"999999";s:11:"gsell_count";s:6:"999999";s:12:"gsell2_count";s:6:"999999";s:11:"trade_start";s:5:"09:00";s:9:"trade_end";s:5:"23:00";s:12:"trade_start1";s:5:"09:00";s:10:"trade_end1";s:5:"23:00";s:10:"sell_start";s:5:"09:00";s:8:"sell_end";s:5:"23:00";s:11:"sell_start1";s:5:"09:00";s:9:"sell_end1";s:5:"23:00";s:11:"sell_start2";s:5:"09:00";s:9:"sell_end2";s:5:"23:00";s:11:"sell_start3";s:5:"09:00";s:9:"sell_end3";s:5:"23:00";s:11:"sell_start4";s:5:"09:00";s:9:"sell_end4";s:5:"23:00";s:11:"sell_start5";s:5:"09:00";s:9:"sell_end5";s:5:"23:00";s:2:"zt";a:4:{i:2;s:7:"9999999";i:3;s:7:"9999999";i:4;s:7:"9999999";i:5;s:7:"9999999";}s:4:"team";a:4:{i:2;s:7:"9999999";i:3;s:7:"9999999";i:4;s:7:"9999999";i:5;s:7:"9999999";}s:4:"zcjl";a:4:{i:2;s:0:"";i:3;s:0:"";i:4;s:0:"";i:5;s:0:"";}s:4:"kjjl";a:4:{i:2;s:0:"";i:3;s:0:"";i:4;s:0:"";i:5;s:0:"";}s:3:"mzt";a:4:{i:2;s:7:"9999999";i:3;s:7:"9999999";i:4;s:7:"9999999";i:5;s:7:"9999999";}s:5:"mzcjl";a:4:{i:2;s:0:"";i:3;s:0:"";i:4;s:0:"";i:5;s:0:"";}s:5:"mkjjl";a:4:{i:2;s:0:"";i:3;s:0:"";i:4;s:0:"";i:5;s:0:"";}}

所谓php序列化,就是把php的变量转换成字符串,方便存数据库、文件、网络传输

可以直接使用php的反序列化函数unserialize()解码(序列化是serialize()),大概就是下面这样:

array(
    "reg_zs"      => "0",
    "reg_zskj"    => "体验矿机",
    "reg_pzskj"   => "",
    "sign"        => "0.01",
    "zjcj"        => "0",
    "trade_sxf"   => "36",   // ← 交易手续费
    "kj_sxf"      => "5",
    "cn_money"    => "0.16",
    "trade_price" => "0.83",
    "add_price"   => "0.04",
    "buy_count"   => "2",
    "ykcz_sxf"    => "30",
    "hfcz_sxf"    => "30",
    "btc_sxf"     => "30",
    "sell_count"  => "999999",
    ...
)

终于找到手续费trade_sxf的值了

36

17.其中金瑞币平台中目前有几种充值方式?[标准格式:100]

image-20250912221541653

2

18.二号集群节点有源代码的网站目录有几个?(正在运行的除外)[标准格式:1]

只在二号工作节点看到一个未被使用的网站:

image-20250912222016468

不过这里面只有一个ini文件,不知道算不算,如果不算似乎一个也没有了

1

19.二号集群节点memcached端口是?[标准格式:100]

image-20250910205107702

11211

20.盲盒平台中余额最多的用户是?[标准格式:AbC1d]

依旧文件搜索:

image-20250912230438235

余额是通过$userInfo[‘rmb’]变量存储的,搜索$userInfo:

image-20250912230152763

也就是说到$userInfo是pre_user数据库的一行信息,通过user定位

再结合之前的$userInfo[‘rmb’],得到这个表有rmb和user两个字段,依据这个查询(有上题经验,不搜表名):

select table_schema,table_name
from information_schema.columns
where column_name in ('user','rmb')
group by table_schema,table_name
having count(distinct column_name) = 2;

image-20250912231630664

果然根本不叫pre_user,点开就能找到rmb最多的人:

image-20250912231742757

ZrAuyMT1tyo

21.盲盒平台可选二级域名有多少个?[标准格式:100]

搜索域名,查看相关文件,可以放在它的值来源于config('user_url')

image-20250912232935710

继续搜索config,发现一个pre_config表:

image-20250912234159244

它存在与盲盒数据库里面,恰好有user_url,应该就是目标表:

image-20250912234257082

9yx.xyz,3rd.xyz,g3h.xyz,524f.fit,ze3g.fit,xa43.fit,scv4g.xyz,cxse.xyz,ddv.xyz,awev.xyz,eafv.fit,zxee3g.fit,zsefg.fit

数一下就行

13

22.盲盒平台的支付密钥是?[标准格式:AbC1d]

搜索密钥可以看见支付密钥还是来源于config,也就是上一题的表:

image-20250912234835145

image-20250912234728919

LDAWIucAQQGQp7rEE4nSlvzQMKZxTxopqNSwjL8PcAIBbVLJkh

23.盲盒平台中拥有分站的用户名是?[标准格式:123abc]

之前找可选域名的时候就找到了:

image-20250912235136652

$res = $DB->query("UPDATE `pre_site` SET `url`='{$user_url}' WHERE `user`='{$userName}'");

找到这个pre_site,根据之前的经验很快就找到了真实表名mh_site:

image-20250912235244317

只有一条记录

5432ef

24.借贷平台(www.jiedai0rmr.com )中验证码发送接口域名是?[标准格式:http://xxx.xxx.xxx/]

从这题开始不知道宝塔犯什么病,一点编辑就卡死(可能是文件太多了或者别的什么),所以就用火眼了,实在麻烦,说一下大概思路

搜索验证码:

image-20250913000102782

这个文件里面可以看见是由sendSSms函数进行验证码服务:

image-20250913001415308

搜素sendSSms,可以看到下面的代码:

$Smsapi = new Smsapi($apiKey, $apiSecret);

也就是说真正发短信的逻辑在Smsapi这个类里,找到它看内容就行:

class Smsapi {
    protected $sendurl = "http://api.smsbao.com/";

    public function send($number,$cont){
        $user = "yunbeiw"; //短信平台帐号
        $pass = md5("yunbeiw"); //短信平台密码
        $sendurl = $this->sendurl."sms?u=".$user."&p=".$pass."&m=".$number."&c=".urlencode($cont);
        $result = file_get_contents($sendurl);
        return $result;
    }
}
http://api.smsbao.com/

25.借贷平台后台登录密码的加密算法中共使用了多少次hash函数加密?[标准格式:10]

在上一题的CommonAction文件里面有:

protected function getpass($pass){
    return sha1(md5(md5(C('cfg_adminkey')).md5($pass)));
}

3次MD5+1次SHA1

4

26.接上题,借贷平台中后台登录的密码额外加密字符串?[标准格式:123ABc+]

上题能知道是cfg_adminkey变量,搜索:

image-20250913003957091

26XBAmVMs+n_

27.借贷平台中一共有多少借款订单?[标准格式:100]

依旧搜索:

image-20250913004926052

代码中checkorder()函数检查当前用户是否已经有借款订单,其中有这样的几行:

$Order = D("order");
$arr = array(
    'user' => $this->getLoginUser(),
    'money' => $money,
    'months' => $month,
    'monthmoney' => ceil($order['huankuan'] + $order['fuwufei']),
    'donemonth' => 0,
    'addtime' => time(),
    'status' => 9,
    'pid' => $status,
    'bank' => $info['bankname'],
    'banknum' => $info['bankcard'],
    'ordernum' => $ordernum,
    'discode'=>$co["discode"]
);
$status = $Order->add($arr);

ThinkPHP中D(“order”)会返回对应的模型对象,操作的就是数据库表order,而下面的$arr内容则是order表的各个字段名称

在二号工作节点,一共是三个数据库,前面用过两个,剩下的motx5dw就是借贷平台的了

很快就能找打order表,并且字段名也对得上:

image-20250913005312072

43

28.借贷平台中"包玉莲"的收款卡号是?[标准格式:1000]

image-20250913010021999

查看文件,里面提到修改卡号的逻辑:

$Order = D("userinfo");
$status = $Order->where(array('user' => $user))->save(array(
    'bankname' => $bank,
    'bankcard' => $banknum
));

找到userinfo表:

image-20250913010013010

342622197303241606

29.借贷平台中贷款最大限额是多少?[标准格式:100]

依旧公式:

image-20250913010653160

image-20250913010722362

350000

30.请综合该集群一共有多少个网站数据库?[标准格式:100]

image-20250913010932780

一共11个,其中information_schemamsyqlperformance_schemasys这四个是系统自带

7
距离小站第一行代码被置下已经过去
使用 Hugo 构建
主题 StackJimmy 设计
...当然还有kakahuote🤓👆