CISCN 2024 Writeup
Misc
1. 火锅链观光打卡
安装浏览器拓展MetaMask后连接钱包,集齐火锅食材即可兑换flag
2. Power Trajectory Diagram
查阅资料可知为侧信道攻击,简单来说就是响应不同会导致功耗曲线不同。
把tpz文件中的trace数组绘制成轨迹图,根据index数组中按0-12每个数字出现40次的规律,猜测在trace数组中也是以每40个为一组。观察前40行的功耗轨迹图,发现第37行(索引为36)与其他行明显不同。按照这种规律对trace数组共计520行数据进行排查,记录下不同的行
第37, 43, 89, 139, 163, 214, 277, 309, 347, 389, 431, 477行
绘图脚本:
import numpy as np
import matplotlib.pyplot as plt
flag = np.load('flag.npz')
# index [0,0,...,0,1,1,...,...,12,...,12] 每个数字重复40次 40*13 = 520
f_index = flag['index']
# input [a,b,...,z,0,1,...,9,_,!,@,#] 重复13次 40*13 = 520
f_input = flag['input']
# output为空
f_output = flag['output']
# trace是一个520*5000的数组, 记录功耗轨迹
f_trace = flag['trace']
power_traces = f_trace
plt.figure(figsize=(12, 6))
for i in range(0,40): # 此处为遍历x~y行,需要更改参数后执行多次
plt.plot(power_traces[i], label=f'Trace {i+1}')
plt.title('Power Traces')
plt.xlabel('Sample Point')
plt.ylabel('Power Consumption')
plt.legend()
plt.show()
根据input内容打印flag:
m = [37, 43, 89, 139, 163, 214, 277, 309, 347, 389, 431, 477]
s = []
for i in m:
s.append(i-1)
for i in s:
print(f_input[i], end='')
# _ciscn_2024_ 包上flag{}即可
3. 通风机
搜索 .mwp
文件,需要使用 西门子MICRO WIN
编程软件打开。在软件中生成新的 .mwp
文件,与题目文件对比发现所给文件头少了 GJK
关键字,添加后就可以正常打开。打开后找到base64编码字符串,解码即可。
Crypto
1. 古典密码
埃特巴什解码得到:
ZmF7MmI4MzhhLTk3YWQtZTlmNzQzbGdiYjA3LWNlNDctNmUwMjgwNGN9
base64解码得到:
fa{2b838a-97ad-e9f743lgbb07-ce47-6e02804c}
栅栏解码,分栏数为2,得到:
flag{b2bb0873-8cae-4977-a6de-0e298f0744c3}