时间:2025-05-16 17:40
人气:
作者:admin
vr案情中获得的关键信息


结果为460036641292715
qq里,解密一下数据库,首先需要从mmkv里获取用户的uid

然后解密数据库

聊天记录里是图片,但是找不到对应文件

但是在缓存目录里能发现这个图片缓存,不过暂时不知道通过什么可以映射上

结果为175
手工翻找不到哇

结果为E477D4C7-BD02-4979-BC9D-5C5DE7BD1F17
private\var\installd\Library\Logs\MobileInstallation\mobile_installation.log.0

结果为2025-04-17 10:51:39
tg不会解密

结果为hostsixer@hotmail.com
应用快照里,xways没法直接预览

结果为12345678
mac电脑备忘录里


结果为2.mp4
搜索密文可以找到对应的文档

结果为48

结果为西红市中山路35号PGS健身房
银联会议,qq里发的


结果为com.carriez.flutter_hbb

结果为59.110.10.229
结果为21116

结果为WIUqzRq1Ocx4QNnsF26dZQijKdyd2L9OfaT55hDlQCI=

结果为1807892422

结果为google-Pixel
app里找了半天,应该是这个

结果为com.example.liekai

结果为com.example.liekai.MainActivity

结果为SHA256withRSA
高版本安装后一直白屏,查看logcat后发现是存储权限问题,主动给一下
adb shell pm grant com.example.liekai android.permission.READ_EXTERNAL_STORAGE
adb shell pm grant com.example.liekai android.permission.WRITE_EXTERNAL_STORAGE
使用blutter反编译python3 blutter.py /mnt/g/2025盘古石杯/晋级赛/export/arm64-v8a /mnt/g/2025盘古石杯/晋级赛/export/

asm目录里dart的字节码,在这边可以简单看一些东西,比如黑幕中间的内容

然后到objs.txt里搜索

定位到这里,有个delay函数

查一下值,这里是纯猜

结果为1.000
结果为pgs比武专用

结果为70
结果为4

结果为recordings.db
用blutter生成的脚本进行hook
function onLibappLoaded() {
// xxx("remove this line and correct the hook value");
const fn_addr = 0x394a84;
Interceptor.attach(libapp.add(fn_addr), {
onLeave: function (retval) {
console.warn("videoKeyByte =>")
console.log(getTaggedObjectValue(retval))
}
});
}
function videoIVBytes(){
const fn_addr = 0x394928;
Interceptor.attach(libapp.add(fn_addr), {
onLeave: function (retval) {
console.warn("videoIVBytes =>")
console.log(getTaggedObjectValue(retval))
}
});
}
function pathIVBytes(){
const fn_addr = 0x370f2c;
Interceptor.attach(libapp.add(fn_addr), {
onLeave: function (retval) {
console.warn("pathIVBytes =>")
console.log(getTaggedObjectValue(retval))
}
});
}
function pathKeyBytes(){
const fn_addr = 0x371054;
Interceptor.attach(libapp.add(fn_addr), {
onLeave: function (retval) {
console.warn("pathKeyBytes =>")
console.log(getTaggedObjectValue(retval))
}
});
}
function audioIVBytes(){
const fn_addr = 0x395668;
Interceptor.attach(libapp.add(fn_addr), {
onLeave: function (retval) {
console.warn("audioIVBytes =>")
console.log(getTaggedObjectValue(retval))
}
});
}
function audioKeyBytes(){
const fn_addr = 0x3957c0;
Interceptor.attach(libapp.add(fn_addr), {
onLeave: function (retval) {
console.warn("audioKeyBytes =>")
console.log(getTaggedObjectValue(retval))
}
});
}
function tryLoadLibapp() {
libapp = Module.findBaseAddress('libapp.so');
if (libapp === null)
setTimeout(tryLoadLibapp, 500);
else{
onLibappLoaded();
videoIVBytes();
pathIVBytes();
pathKeyBytes();
audioIVBytes();
audioKeyBytes();
}
}
function getTaggedObjectValue(tptr, depthLeft = MaxDepth) {
if (!isHeapObject(tptr)) {
// smi
// TODO: below support only compressed pointer (4 bytes)
return [tptr, Classes[CidSmi], tptr.toInt32() >> 1];
}
// 注意这里一定要把下面这行注释掉
// tptr = decompressPointer(tptr);
let ptr = tptr.sub(1);
const cls = Classes[getObjectCid(ptr)];
const values = getObjectValue(ptr, cls, depthLeft);
return [tptr, cls, values];
}
可以拿到解密数据库中路径的key和iv


解密路径

结果为recording

结果为Salsa20
密钥长度256位

iv是128位的

结果为AES-256
key

iv

结果为0x4D
python搓一个解密脚本
from base64 import b64decode
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad
import os
def decrypt_base64_aes_cbc(encrypted_data: str, key: bytes, iv: bytes) -> str:
encrypted_bytes = b64decode(encrypted_data)
cipher = AES.new(key, AES.MODE_CBC, iv)
decrypted_bytes = unpad(cipher.decrypt(encrypted_bytes), AES.block_size)
return decrypted_bytes
def decrypt(folder_path: str, key: bytes, iv: bytes) -> str:
for root,dirs,files in os.walk(folder_path):
for file in files:
with open(os.path.join(root, file), "r") as f:
encrypted_data = f.read()
decrypted_data = decrypt_base64_aes_cbc(encrypted_data, key, iv)
with open(os.path.join(root, file+"_dec"), "wb") as f:
f.write(decrypted_data)
def main():
audio_key = bytearray.fromhex("2b7e151628aed2a6abf7158809cf4f3c2a7d141527add1a5aaf6148708ce4e3b")
audio_iv = bytearray.fromhex("000102030405060708090a0b0c0d0e0f")
video_key = bytearray.fromhex("3c8f262739bfe3b7bc0826991ad0504d")
video_iv = bytearray.fromhex("101112131415161718191a1b1c1d1e1f")
decrypt(r"G:\2025盘古石杯\晋级赛\export\files\video", audio_key, audio_iv)
decrypt(r"G:\2025盘古石杯\晋级赛\export\files\recording", video_key, video_iv)
if __name__ == "__main__":
main()
解密后的哈希也没有对的上的。。
找到文件后,再去数据库里查创建时间
找人问了出题人,得到结果是这个文件,这里肯定是出题人失误,他解密时用的nopadding,导致尾部有脏数据,nopadding解出来哈希就能匹配上了


结果为2025-04-18 14:32:08
网络信息好像由于Registry库的问题,注册表没法正常解析,把那个函数注释掉了

结果为18362
结果为2025-04-18 03:20:53
注册表找一下

结果为00-0C-29-0F-60-00

结果为S-1-5-21-3733482367-3411043098-2536183883-1001

结果为Google Chrome

结果为135.0.7049.85

结果为Telegram

结果为tqmdavidjohnson300@gmail.com

结果为VeraCrypt.exe

结果为192.168.56.129
邮件有

结果为13770603
找到容器,结合vr里的提示


掩码攻击


结果为Pgs8521d3j

结果为F

结果为1023

结果为430529195112085460

这个文件在分区间隙里


结果为keyfile.keyfile
结果为zfs加密pool密钥文件

结果为com.apple.Notes
lsb隐写,red通道0

结果为位移加密 正向位移操作

结果为enc

结果为1
加密的密钥是固定的,打印出来就行,另外iv是保存在文件头部16个字节的,据此解密即可


结果为金刚Ⅲ号
先找到木马


结果为104.18.45.79

结果为SubDir
结果为BwAcr.exe
c#写的,上dnsPy

找到了Application Name,所以全局搜










这里面只有FileZilla和WinSCP不是浏览器
结果为8

结果为Unkown

少模块

在lib里找到

反编译一下


结果为42
是加密文件的?

结果为iv_encrypted_data
这里的mixed_base没有使用,所以并没有descramble

结果为_descramble_key
做到这里总感觉提取的程序不对。。
需要注意pc17,文件本身是密钥,则密钥为emZz5Yqg5a+GcG9vbOWvhumSpeaWh+S7tg==

结果为223DCB83-82B0-4C62-864A-DB28D84735B8

结果为192.168.56.128

结果为zfs

结果为keyfile
john字典攻击

结果为P@ssw0rd
先把系统盘转成vmdk,方便编辑
ehci:0.present = "TRUE"
ehci:0.deviceType = "disk"
ehci:0.fileName="server1.vmdk" 这里是系统盘镜像的路径,最好是复制一份过来用
ehci:0.readonly="FALSE"

结果为7.0.1
修改网卡配置文件,改到同网段,以便用ssh和web界面

登录到web页面,可以看到磁盘阵列还没解密,这里上传密钥文件或者输入密钥内容就可以点击启动按钮启动阵列了



结果为/mnt/disk1/docker.img

结果为aigo_U210

结果为9

结果为www-db-1
结果为22556
启动网站和数据库容器

能看到网站挂载路径是/mnt/disk1/www
日志里有记录后台入口

看一下数据库连接配置,连上数据库

看到密文很像md5,直接123456替换进去,登录一下看看有没有加盐

实测没有加盐直接登录成功,无需分析代码

但是这里的域名不合答案格式

这里的域名在手机qq里有符合答案格式的

结果为2025.pgscup.com
结果为www_dkewl_com
结果为http://2025.pgscup.com:8080/www9nwcc/login.html
前端看一下内容

数据库找一下就行

结果为user_member
充值提现的表是空的,docker映射能看到2个sql,导入sql


结果为5769477


结果为2114313505182218

结果为100


结果为正常
select sum(money) from recharge where left(type,3)='支付宝' and status=0

结果为11642201.00
虚拟机

虚拟机加密了,但是pyvmx-cracker好像跑不出来,edpr加载提示没加密

直接将加密字段去掉,这里应该是没有加密磁盘,所以可以这样操作

密码弱口令,123456,反查哈希得到

结果为Nodejs
看历史记录重建网站

前端npm run serve后端npm run dev

ip在前端被写死了,这里可以直接给适配器添加一个ip


数据库这里监听的ip改成0.0.0.0并重启服务,这样本地可以连接,注意这里没有身份验证

现在web可以登录
结果为5.0.3

结果为crm

结果为aes-128-cbc


结果为utf8


结果为error:加密处理异常



先从.env里直接读取,如果没有密钥且有masterpassword,则随机生成,否则就从key.dat中读取
管理员密码bcrypt,123456替换登录


结果为2000
查不到这个身份证

结果为2

结果为Panasonic
结果为NR-E46CV1

结果为12345678-90ab-cdef-1234-567890abcdef
搜索face,应该是存5张,后面2个没有数据

结果为5
这边face1,jpg图片,通过签名定位文件内容



结果为盘古石杯贾韦码
文件签名是jpg
结果为face2.jpg
strings一下

结果为pangushicup


结果为882564
找不到其他数据,这边的2935是对应了文件大小

考虑之前的解密出的压缩包里有face1,但是不确定

结果为15:48
文件偏移,中间差了102424给字节,100kb,有一部分是用来存储元数据


结果为100KB
这个命名格式的文件都是ts文件,维度这个是mp4

视频内容中,前后时间矛盾



结果为ea7be
需要先找到要分析的数据

先算层级


select *
from members m
left join `tree` t on m.member_id = t.ID
where t.所处层级 = 1;

结果为杨俊
select payer_id, sum(amount) total
from transactions
where `type` = 'withdrawal'
group by payer_id
order by total desc
limit 1;

结果为M019024
select payer_id, avg(amount) avger
from transactions
where `type` = 'commission'
group by payer_id
order by avger desc
limit 1;

结果为M028080,999.43
倾向于整个表的内容都认定为交易
select round(count(1)/10,0) from members; # 3000
select member_id, registration_date, b.交易次数 + c.交易次数 次数
from (select member_id, registration_date from members order by registration_date limit 3000) a
left join (select t.payer_id, count(1) 交易次数 from transactions t group by t.payer_id) b
on a.member_id = b.payer_id
left join (select t.payee_id, count(1) 交易次数 from transactions t group by t.payee_id) c
on a.member_id = c.payee_id
order by 次数 desc, registration_date;

结果为M028190,M013525,M020089,M018530,M027815
以什么依据算增长率?
连续90天无交易还是总计90天及以上无交易,还是恰好必须有90天没有交易??!
select upline_id, count(member_id) nums
from hierarchy
group by upline_id
order by nums desc
limit 1;

结果为M009748:18
select a.季度, sum(ts.amount) 交易额
from (select member_id,
case
when left(registration_date, 7) = '2020-01' then 'Q1'
when left(registration_date, 7) = '2020-02' then 'Q1'
when left(registration_date, 7) = '2020-03' then 'Q1'
when left(registration_date, 7) = '2020-10' then 'Q4'
when left(registration_date, 7) = '2020-11' then 'Q4'
when left(registration_date, 7) = '2020-12' then 'Q4'
end AS '季度'
from members
where left(registration_date, 7) in ('2020-01', '2020-02', '2020-03', '2020-10', '2020-11', '2020-12')) a
left join transactions ts on a.member_id = ts.payer_id
group by a.季度
select a.季度, sum(ts.amount) 交易额
from (select member_id,
case
when left(registration_date, 7) = '2020-01' then 'Q1'
when left(registration_date, 7) = '2020-02' then 'Q1'
when left(registration_date, 7) = '2020-03' then 'Q1'
when left(registration_date, 7) = '2020-10' then 'Q4'
when left(registration_date, 7) = '2020-11' then 'Q4'
when left(registration_date, 7) = '2020-12' then 'Q4'
end AS '季度'
from members
where left(registration_date, 7) in ('2020-01', '2020-02', '2020-03', '2020-10', '2020-11', '2020-12')) a
left join transactions ts on a.member_id = ts.payee_id
group by a.季度


结果为Q1:20959551.33
select count(member_id) 人数, left(address, 2) 省份
from members
group by 省份
order by 人数 desc; # 江苏
select sum(ts.amount)
from members m
left join transactions ts on m.member_id = ts.payer_id
where left(m.address, 2) = '江苏'
and ts.type = 'withdrawal';

结果为江苏,2301065.13
select 收入-支出 from
(select sum(amount) 支出 from transactions where payer_id='M020038') a,
(select sum(amount) 收入 from transactions where payee_id='M020038') b

结果为17443.99
下一篇:UDP-双向通信