LOADING

加载过慢请开启缓存 浏览器默认开启

CISCN 2024

2024/5/21 题解 CTF

CISCN 2024 Writeup

Misc

1. 火锅链观光打卡

安装浏览器拓展MetaMask后连接钱包,集齐火锅食材即可兑换flag

2. Power Trajectory Diagram

查阅资料可知为侧信道攻击,简单来说就是响应不同会导致功耗曲线不同。

image-20240519164421306

把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}