记录一下西湖论剑的两个misc题,web题晚点也更
yusa的小秘密 这题是色空间转换,RGB转YCrCb
stegsolve查看,发现R0通道和G0通道有显示了一半的flag
尝试将图片转为YCrCb色空间的图片后,再用stegsolve检查各个通道,最后在B0通道发现flag
色空间转换脚本:
1 2 3 4 5 6 7 from cv2 import cv2 as cvimage = cv.imread('yusa.png' ) cvt_img = cv.cvtColor(image, 36 ) Y, Cr, Cb = cv.split(cvt_img) cv.imwrite('yusa_ycrcb.png' ,cvt_img)
yusa的秘密 题解 内存取证题,给了两个附件,其中一个Who_am_i
有密码,先看内存镜像:
首先先filescan
1 vol.py -f Yusa-PC.raw --profile=Win7SP1x64 filescan
根据提示,组织名字叫Sakura,筛选一下
1 2 3 4 5 6 7 8 └─$ vol.py -f Yusa-PC.raw --profile=Win7SP1x64 filescan | grep Sakura Volatility Foundation Volatility Framework 2.6 0x000000003e58ada0 1 0 R--r-- \Device\HarddiskVolume2\Program Files\MSBuild\Microsoft\Windows Workflow Foundation\Sakura-didi 0x000000003e78c6a0 1 0 R--r-- \Device\HarddiskVolume2\Users\Yusa\Desktop\Sakura文件\Sakura-公告 0x000000003f2ae290 1 0 R--r-- \Device\HarddiskVolume2\Users\Yusa\Desktop\Sakura文件\Sakura-egg5 0x000000003f959980 1 0 R--r-- \Device\HarddiskVolume2\Users\Yusa\Desktop\Sakura文件\Sakura-备忘录 0x000000003faa3a20 2 0 RW-rw- \Device\HarddiskVolume2\Users\Yusa\AppData\Roaming\Microsoft\Windows\Recent\Sakura文件.lnk 0x000000003fabc220 1 0 R--r-- \Device\HarddiskVolume2\Users\Yusa\Desktop\Sakura文件\Sakura-logo
确实有,逐个导出查看:
Sakura备忘录:
2021.11.15:请组织内的人务必删除所有不必要的联系方式,防止我们的计划出现问题。
Sakura公告:
全体成员注意,我们将在11月20号,对地球发起总攻,请做好准备。
Sakura-didi:
压缩文件,里面包含一个.bmp文件,加密的
运行一下pslist
,此处省略部分结果:
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 └─$ vol.py -f Yusa-PC.raw --profile=Win7SP1x64 pslist Volatility Foundation Volatility Framework 2.6 Offset(V) Name PID PPID Thds Hnds Sess Wow64 Start Exit ------------------ -------------------- ------ ------ ------ -------- ------ ------ ------------------------------ ------------------------------ 0xfffffa80024bdae0 System 4 0 97 598 ------ 0 2021-10-28 03:46:58 UTC+0000 ..... 0xfffffa8003c8b460 StikyNot.exe 2228 2276 8 210 1 0 2021-10-28 10:37:08 UTC+0000 0xfffffa8003ad2b30 taskhost.exe 2160 488 5 101 1 0 2021-10-29 04:10:23 UTC+0000 0xfffffa8003cca750 cmd.exe 2536 2276 1 19 1 0 2021-10-29 04:15:14 UTC+0000 0xfffffa8003b1d920 conhost.exe 1344 396 2 58 1 0 2021-10-29 04:15:14 UTC+0000 0xfffffa8002b49060 audiodg.exe 2744 772 6 141 0 0 2021-10-29 05:42:04 UTC+0000 0xfffffa800282e590 dllhost.exe 1168 620 28 354 1 0 2021-10-29 05:42:32 UTC+0000 0xfffffa8002d0a920 wab.exe 2448 820 8 154 1 0 2021-10-29 05:43:20 UTC+0000 0xfffffa80028b2b30 DumpIt.exe 820 2276 1 25 1 1 2021-10-29 05:43:42 UTC+0000 0xfffffa8003042b30 conhost.exe 1356 396 2 59 1 0 2021-10-29 05:43:42 UTC+0000 0xfffffa8002841060 dllhost.exe 1000 620 6 7536754 1 0 2021-10-29 05:44:04 UTC+0000
发现StikyNot.exe
,把整个进程dump下来分析
1 vol.py -f Yusa-PC.raw --profile=Win7SP1x64 memdump -p 2228 -D ./
在进程的镜像里面寻找便签的内容,搜索便签内容开始的字符串fs22
1 2 3 4 5 \fs22\'d6\'d5\'d3\'da\'c4\'c3\'b5\'bd\'c1\'cb\'d7\'e9\'d6\'af\'b5\'c4\'ba\'cb\'d0\'c4\'c3\'dc\'c2\'eb\'a3\'ac\'ce\'d2\'b2\'bb\'cf\'eb\'d4\ 'd9\'b5\'b1\'ce\'d4\'b5\'d7\'c1\'cb\'a3\'ac\'ce\'d2\'cf\'eb\'b8\'cf\'bd\'f4\'c0\'eb\'bf\'aa\'d5\'e2\'b8\'f6\'b9\'ed\'b5\'d8\'b7\'bd\'a1\'a 3\'ba\'cb\'d0\'c4\'c3\'dc\'c2\'eb\'ca\'c7\'a3\'ba\'ca\'c0\'bd\'e7\'c3\'bb\'c1\'cb\'d0\'c4\'cc\'f8\'a1\'a3\par \fs22 i love you yusaxixixixi\par
还原一下:
1 2 终于拿到了组织的核心密码,我不想再当卧底了,我想赶紧离开这个鬼地方。核心密码是:世界没了心跳。 i love you yusaxixixixi
尝试用密码解密刚才的压缩包和附件,解不开
尝试用foremost分离进程中的文件,分离结果:
1 2 3 4 5 6 7 8 67 FILES EXTRACTED gif:= 2 bmp:= 4 htm:= 31 ole:= 2 zip:= 2 png:= 26
其中有一个zip文件,压缩包的内容是一个没有后缀的exp
,带了加密的,其实这个文件也可以在filescan的输出结果里找到,名字是key.zip
尝试用刚才获取的密码解压:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 from PIL import Imageimport structpic = Image.open('key.bmp' ) fp = open('flag' , 'rb' ) fs = open('Who_am_I' , 'wb' ) a, b = pic.size list1 = [] for y in range(b): for x in range(a): pixel = pic.getpixel((x, y)) list1.extend([pixel[1 ], pixel[0 ], pixel[2 ], pixel[2 ], pixel[1 ], pixel[0 ]]) data = fp.read() for i in range(0 , len(data)): fs.write(struct.pack('B' , data[i] ^ list1[i % a*b*6 ])) fp.close() fs.close()
一个python脚本,对flag进行了操作存在了Who_am_I
里
然后我们要做的就是找到两个压缩包的密码
首先尝试mimikatz获取用户的明文密码
1 2 3 4 5 6 └─$ vol.py -f Yusa-PC.raw --profile=Win7SP1x64 mimikatz Volatility Foundation Volatility Framework 2.6 Module User Domain Password -------- ---------------- ---------------- ---------------------------------------- wdigest Yusa YUSA-PC YusaYusa520 wdigest YUSA-PC$ WORKGROUP
用这个密码去解压附件,成功
根据备忘录的提示,提取两个contact文件,其中一个神秘人的名字是base32
解码base32:
Yusa,组织刚刚派下来一个任务,请快点完成,你只有三天时间。 6L+Z5piv5L2g5Lya55So5Yiw55qEa2V577yM5Y+v5Lul55So5a6D5omT5byA57uE57uH57uZ5L2g55qE5bel5YW344CC5bel5YW35ZG95ZCN5L6d54Wn5LqG5Lyg57uf6KeE5YiZ44CCa2V577yaODIwYWM5MmI5ZjU4MTQyYmJiYzI3Y2EyOTVmMWNmNDg=
解码base64:
这是你会用到的key,可以用它打开组织给你的工具。工具命名依照了传统规则。key:820ac92b9f58142bbbc27ca295f1cf48
尝试用key解密Sakura-didi,成功
接下来写脚本还原flag:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 from PIL import Imageimport structpic = Image.open('key.bmp' ) fp = open('flag' , 'wb' ) fs = open('Who_am_I' , 'rb' ) a, b = pic.size list1 = [] for y in range(b): for x in range(a): pixel = pic.getpixel((x, y)) list1.extend([pixel[1 ], pixel[0 ], pixel[2 ], pixel[2 ], pixel[1 ], pixel[0 ]]) data = fs.read() for i in range(0 , len(data)): fp.write(struct.pack('B' , data[i] ^ list1[i % a*b*6 ])) fp.close() fs.close()
脚本输出的flag是一个gif文件,stegsolve逐帧查看可以在第10帧查看到flag
彩蛋
filescan
->新建文本文档.txt
yusa姐姐很担心比赛时平台卡得崩溃,为此彻夜难眠
filescan
-> egg2
yusa姐姐是尊贵的SVIP8,不会有人不知道叭
filescan
-> yusa.contact
You still have lots more to work on…
consoles
->base64解码
yusa姐姐有好多好多的小娇妻,渣男
filescan
->Sakura-egg5
->screenshot
获取密码
yusa姐姐希望西湖论剑的flag格式为yusameinv{.*?},但我就不^_^