2024 古剑山 Misc Crypto方向 部分WriteUp
C3ngH Lv3

先吐槽:Misc和Crypto两个方向真是抽象到我无语得想笑。早上9.02睡眼惺忪爬起来看题,结果吃了三个小时史导致我中饭都吃不下。

Misc

蓝书包

解压后发现182个加密压缩包,尝试爆破解压密码,发现1.zip对应密码是10001,2.zip密码是10002,以此类推到10182。

image

根据此特点写脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import os
import zipfile

output_dir = "./output"
os.makedirs(output_dir, exist_ok=True)

for i in range(1, 183):
zip_filename = f"{i}.zip"
password = str(10000 + i).encode()
try:
with zipfile.ZipFile(zip_filename, 'r') as zip_file:
zip_file.extractall(path=output_dir, pwd=password)
print(f"成功解压: {zip_filename}")
except:
print(f"解压失败: {zip_filename}")

image

完成解压后可以在output目录下看到有saa-szz182个文件,看到saa有png文件头。

image

修改saa为saa.png打开查看发现是很小一张图片,而且缺少文件尾

image

image

猜测是将所有文件拼接后得到完整的图片,于是写脚本进行拼接

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
import os

def generate_file_list():
file_list = []

for first in range(ord('s'), ord('t')):
for second in range(ord('a'), ord('z') + 1):
for third in range(ord('a'), ord('z') + 1):
file_name = f"{chr(first)}{chr(second)}{chr(third)}"
file_list.append(file_name)
if len(file_list) == 182:
return file_list

output_file = "output.png"
file_list = generate_file_list()

with open(output_file, 'wb') as outfile:
for file_name in file_list:
if os.path.exists(file_name):
with open(file_name, 'rb') as infile:
outfile.write(infile.read())
print(f"拼接文件: {file_name}")
else:
print(f"文件未找到: {file_name}")

print(f"合成完成,输出文件为: {output_file}")

image

根据题目名“蓝书包”提示为LSB,使用zsteg和stegsolve后无果,寻找cloacked-pixel的key后无果,尝试爆破cloacked-pixel的密钥,得到密钥为654321,解得flag

image

image

flag{8719e663c0507cecbff2db103a7f7cd7}

jpg

解压后开局一张图,010查看发现文件末尾有PK头隐写zip文件,使用foremost进行提取

image

发现文件加密,010查看发现flag.pdf为伪加密,修改加密位后解压得到flag.pdf

image

尝试复制pdf中的文本后可以得到提示无法选中文本image

可以借此猜测该pdf是图片一类的东西导出的,使用Photoshop打开发现存在多个图层

image

扫码得到一串长度为128的字符

image

1
67f480eff11781617044bd47fb9535cfb0e4b6a09e51daff2107c536e9d4eebb3d517cfea6e3f176d4e0d37a9f3658845f3d1917cfce30a4f44ffa2e0af58485

看到压缩包内的sha512.txt文件大小也是128,可以猜测这一串文字是sha512.txt的明文,利用这个文件进行明文攻击,新建一个sha512.txt然后压缩查看发现CRC值相同

image

image

按照相同方式压缩后进行明文攻击,使用ARCHPR直接找到密码(也可以使用bkcrak)

image

解压后得到flag

image

1
flag{10e23151aa0da35221a81dff81a53b4e}

Crypto

cs

1
截获了一段密文字符串jhjnjcjikmkfjjjkkejkkekdjgjcjnjhjnjcjiko,明文就在其中,请你把它找出来?

经过尝试,hnci的ascii码减2后为flag,借此猜测j和k是偏移量,可以将这段密文分为两个等长的部分

1
2
jjjjkkjjkjkkjjjjjjjk
hncimfjkekedgcnhncio

可知偏移量j为2,根据这个爆破偏移量k

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
str1 = "jjjjkkjjkjkkjjjjjjjk"
str2 = "hncimfjkekedgcnhncio"

k_range = range(-100,100)
results = []

for k in k_range:
str3 = ""
for i in range(len(str1)):
if str1[i] == "j":
str3 += chr(ord(str2[i]) - 2)
else:
str3 += chr(ord(str2[i]) + k)
results.append(f"k={k}: {str3}")

for result in results:
print(result)

得到flag

image

1
flag{thisisrealflag}
 评论
评论插件加载失败
正在加载评论插件
总字数 80.2k 访客数 访问量