“鹏云杯”第十二届山东省大学生网络安全技能大赛 - 决赛WriteUp
很多题比赛没做出来 复盘出的
xxxx大学 (xx省科学院) 还是太权威了
厕所分享会还知道封烟
Crypto
你一定很懂md5
题目:
import uuid
import hashlib
flag = "flag{XXX}"
def abcduuid(flag):
for char in flag:
md5_hash = hashlib.md5(char.encode('utf-8')).hexdigest()
print(f"{md5_hash}")
if __name__ == "__main__":
abcduuid(flag)
'''output:
太长了不贴了 反正就是一对md5
'''md5穷举 脚本
import uuid
import hashlib
output = '''
把那一大堆md5复制过来就行了
'''
md5_dict = output.strip().split('\n')
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_{}"
flag = ""
i = 0
while i < len(md5_dict):
for char in alphabet:
md5_hash = hashlib.md5(char.encode('utf-8')).hexdigest()
if md5_dict[i] == md5_hash:
flag += char
i += 1
print(flag)
break
print("flag:", flag)Misc
Welcome
签到题 把像素值转成图像就行
puzzlesolver梭了 B神太全面了还是


找到大小合适的图像 ocr就行
SecDisk
嗯对这题就是纯爆
NetworkSec
我真崩溃了 我再也不卸载office了 谁懂遇到宏没有word的救赎感 wps不支持vb 反正我的是不支持死活没打开
迷茫中发现电脑上有两个远古时期下载的win10&win11 iso 以为终于有救了 因为我记得windows会随机附带office套件来的
结果win10没有 win11让我联网安装 我又不是xxxx大学 (xx省科学院) 的学子我怎么联网
直接轧钢 只能复盘了
AppData\Local\Application Data 中有 KeePass目录、工作日报.eml、secroomr文件
工作日报.eml

得到一个key SecInfo2025!
还有三个附件

png有lsb隐写 提取出一个zip

里面有一个eml_part1_pw1.wannacry 文件,这个wannacry 纯属捣乱 我一开始还以为是那个勒索病毒


010能看出他文件头有问题 后面是PK 前面是RAR,把文件头改成zip的PK
正常来说还有一层伪加密 不过我用7z 直接无视解压
得到第一部分密码 pw_part1:X61DbfQU
然后开始分析docm文件 用word打开后启用宏 Alt + F11 打开开发窗口查看加密代码

Sub asd()
'
' asd Macro
'
Dim inputPath As String
Dim outputPath As String
Dim keyStr As String
Dim keyBytes() As Byte
Dim keyLen As Long
inputPath = "sec.png"
outputPath = "sec_encrypted.png"
keyStr = "masterKey"
keyBytes = StrConv(keyStr, vbFromUnicode)
keyLen = UBound(keyBytes) - LBound(keyBytes) + 1
Dim fileData() As Byte
Dim fileLen As Long
Dim i As Long
Dim b As Integer
Dim kb As Byte
Open inputPath For Binary Access Read As #1
fileLen = LOF(1)
ReDim fileData(0 To fileLen - 1) As Byte
Get #1, , fileData
Close #1
For i = 0 To UBound(fileData)
b = (fileData(i) + 1) Mod 256
kb = keyBytes((i Mod keyLen))
fileData(i) = b Xor kb
Next i
Open outputPath For Binary Access Write As #2
Put #2, , fileData
Close #2
End Sub按压缩包打开docm文件 找到image2 对他原样解密 将masterKey替换为从邮件中发现的 SecInfo2025!
def decrypt_file():
# 密钥
key_str = "SecInfo2025!"
# 将密钥转换为字节数组 对应VBA的StrConv(vbFromUnicode)
key_bytes = key_str.encode('ascii')
key_len = len(key_bytes)
encrypted_path = "image2.png"
decrypted_path = "sec_decrypted.png"
with open(encrypted_path, 'rb') as f:
encrypted_data = f.read()
# 解密处理
decrypted_data = bytearray()
for i in range(len(encrypted_data)):
# 加密后的字节
c = encrypted_data[i]
# 对应位置的密钥字节
kb = key_bytes[i % key_len]
# 逆向步骤1:异或还原 (原加密步骤:(m+1) XOR kb = c → 还原为 (m+1) = c XOR kb)
temp = c ^ kb
# 逆向步骤2:减1并取模256(还原原字节 m = (temp - 1) mod 256)
original_byte = (temp - 1) % 256
decrypted_data.append(original_byte)
# 保存解密后的文件
with open(decrypted_path, 'wb') as f:
f.write(decrypted_data)
print(f"解密完成,文件已保存至:{decrypted_path}")
# 执行解密
decrypt_file()得到原图片 需要宽高爆破 依旧PuzzleSolver


得到第二部分密码pw_part2:CrXC6CxZ
然后开始处理secroomr文件
对文件反转 得到vhd虚拟磁盘文件
with open('./secroomr', 'rb') as f:
data = f.read()
output = data[::-1]
with open('secroomr_rev', 'wb') as f:
f.write(output)
得到第二部分flag b56d54e4858c
到这里卡住了 看有没有其他师傅发力吧
Web
ez_rce
没环境了
总之 x=[]=1&y=[]=2
cmd=pr *
ez_game
js里