0%

西湖论剑2021两道misc题wp

记录一下西湖论剑的两个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 cv

image = 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 Image
import struct
pic = 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

然后我们要做的就是找到两个压缩包的密码

  • 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

用这个密码去解压附件,成功

  • Sakura-didi:

根据备忘录的提示,提取两个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 Image
import struct
pic = 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

彩蛋

  • egg1

filescan->新建文本文档.txt

yusa姐姐很担心比赛时平台卡得崩溃,为此彻夜难眠

  • egg2

filescan -> egg2

yusa姐姐是尊贵的SVIP8,不会有人不知道叭

  • egg3

filescan-> yusa.contact

You still have lots more to work on…

  • egg4

consoles->base64解码

yusa姐姐有好多好多的小娇妻,渣男

  • egg5

filescan->Sakura-egg5->screenshot获取密码

yusa姐姐希望西湖论剑的flag格式为yusameinv{.*?},但我就不^_^