2023安洵杯第六届网络安全挑战赛WP

MISC

疯狂的麦克斯

你好,我叫麦克斯,最后的麦克斯(最后的密码是 某个值的base64,不需要加称号) flag格式: D0g3{}

麦克斯的称号这个文件存在0宽隐写
解密得到 mks007

image-20240126120038831

https://330k.github.io/misc_tools/unicode_steganography.html

https://www.mzy0.com/ctftools/zerowidth1/

image-20240126135049487

解密得到 mks007

接下来打开嗨.zip,发现是一个docx,猜测是zip

可以binwalk或者直接改成zip

里面有一个txt叫MKS IM麦克斯,打开之后发现末尾

image-20240126140640495

凭这里看出应该是某种加密

结合前面的mks007,可能是凯撒偏移

尝试将mks007转换为整数,进行凯撒偏移,得到THISISMKSDOYOUKNOWWHOAMI

this is mks do you know whoami

image-20240126141234226

(预期外:通过维吉尼亚解密,密钥为e,通过rot13,为22)

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
28
29
def caesar_decipher(text, shift):
result = ""

for char in text:
if char.isalpha():
alphabet = ord('a') if char.islower() else ord('A')
shifted = (ord(char) - alphabet - shift) % 26 # 逆向偏移
result += chr(alphabet + shifted)
else:
result += char

return result

# 读取加密后的文件内容
with open('MKS IM麦克斯.txt', 'r') as file:
encrypted_content = file.read()

# 自定义偏移量
offset = "mks007"

# 将偏移量转换为整数
shift = sum(ord(char) for char in offset) - len(offset) * ord('a')

# 对内容进行逆向凯撒偏移
decrypted_content = caesar_decipher(encrypted_content, shift)

# 将解密后的内容写入新文件
with open('mksnew.txt', 'w') as file:
file.write(decrypted_content)

此时作用于文件所有内容,然后根据麦克斯MAX遍历出其中最大值,得到456788P。

虽然好像都是通过直接爆破得来的,不过也能爆破,也算是一种解

FLAG的密码就是456788P base64后的

NDU2Nzg4UA==

D0g3{Th1s_REA11Y_MAX_F1A4_GGB0ND}

Nahida

描述: “Nahida最可爱了!” flag格式: d0g3{}

题目给一个压缩包

里面有一个txt文件和一个Nahida文件

image-20240126141640528

wink?!,是不是提示眼睛

查看nahida文件

image-20240126141819176

感觉好像被reverse了

image-20240126143107423

得到jpg,在图片的最后看到一串字符串,

image-20240126143335766

image-20240126143446419

提示 神之眼(再次提示静默之眼),以及眼的密码在最开始就得到,也就是题目名Nahida

image-20240126143640298

d0g3{Nahida_is_the_best_in_the_world!}

misc-dacongのsecret

image-20240126145107608

得到一个password的d@C0ng 1s cUt3!!!

根据题目提示推出png不止一个秘密

继续用pngcheck打开dacong1hao.png

image-20240126153546598

或者tweakPNG打开

image-20240126153640636

发现在尾部的idat头不对

010打开找到有两个IDATx
直接手动搜索IDATx把第一部分IDATx删掉

回去看png,很明显19 chunk块长度小于0x10000,那么20 chunk块肯定是多余的(经测试删除后png不会少任何像素)

image-20240126154743390

将20chunk块拿出来,补个png文件头(直接用题目png的文件头)

image-20240126155635844

爆破一下宽高,860*123拿到key

image-20240126160018237

wH1T3_r0cckEt_sh00ter

猜测可能是后边用到的

用前边水印的密码打开压缩包得到一张jpg

用010打开末尾有一串hex值

image-20240126160142364

根据特征判断是一个压缩包的hex值倒序

手动提取出来zip

image-20240126160318691

打开发现需要密码

用之前的密钥打开

解压后发现是多段base64

image-20240126160422000

猜测可能是base64隐写

用以下脚本跑出base64隐写的数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
d='''str
'''
e=d.splitlines()
binstr=""
base64="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
for i in e :
if i.find("==")>0:
temp=bin((base64.find(i[-3])&15))[2:]
#取倒数第3个字符,在base64找到对应的索引数(就是编码数),取低4位,再转换为二进制字符
binstr=binstr + "0"*(4-len(temp))+temp #二进制字符补高位0后,连接字符到binstr
elif i.find("=")>0:
temp=bin((base64.find(i[-2])&3))[2:] #取倒数第2个字符,在base64找到对应的索引数(就是编码数),取低2位,再转换为二进制字符
binstr=binstr + "0"*(2-len(temp))+temp #二进制字符补高位0后,连接字符到binstr
str=""
for i in range(0,len(binstr),8):
str=str+chr(int(binstr[i:i+8],2)) #从左到右,每取8位转换为ascii字符,连接字符到字符串
print(str)

image-20240126161216572

或者用puzzlesolver梭哈

pass{m1ku_1s_sha_fufu123}

最后用该秘密通过jphs解出得到flag

image-20240126162025630

flag{d@C0ng_1s_r3@lIy_Re@iLY_Cute}

misc-dacongのWindows

大葱的电脑里有很多好玩的,并且好像一个重要的表被修改了一下;flag有三段 flag格式: flag{}

1
python vol.py -f dacong.raw windows.file | grep "wav"

首先文件检索一下关键词wav,可以发现有很多的wav,暂时先放着

image-20240126175242181

继续搜索一下txt关键词

1
python vol.py -f dacong.raw windows.file | grep "txt"

image-20240126175432694

1
2
python vol.py -f dacong.raw windows.dump --virtaddr 0xe0007922c890
python vol.py -f dacong.raw windows.dump --virtaddr 0xe0007a09d470

查看do_you_want_listen.txt

image-20240126175855875

查看flag3.txt

1
U2FsdGVkX18M+E34cKJlmTU3uo1lHqjUQhKPTBGJiMjg4RWX6saTjOJmLU86538e

do_you_want_liten.txt里提示了miku有一首歌叫做???music

搜索一下歌名可以知道歌曲叫做39music!

image-20240126180502014

结合文件名以及该txt所在的位置猜测是对之前的wav提示

那么把dacong39.wav下载出来

1
python vol.py -f dacong.raw windows.dump --virtaddr 0xe0007a175420

image-20240126180839117

flag{Ar3_Th3Y

1
2
python vol.py -f dacong.raw windows.file | grep "rar"
python vol.py -f dacong.raw windows.dump --virtaddr 0xe00079b15f20

解压后打开flag2.txt

image-20240126181038675

image-20240126181143831

根据翻译推测可能是snow加密

1
2
>SNOW.EXE -C "D:\UserData\Desktop\flag2.txt"
flag2:_tHE_Dddd

然后回头看之前的flag3

是一串加密,但是结合题目的描述,有什么重要的表被修改,猜测需要密钥

在注册表里找到

1
python vol.py -f dacong.raw windows.registry.printkey

image-20240126181546441

解一下是aes

image-20240126181629118

得到第三段flag

dAc0Ng_SIst3Rs????}

flag{Ar3_Th3Y_tHE_DddddAc0Ng_SIst3Rs????}