第十九届全国大学生信息安全竞赛部分题解

admin 2026-01-01 05:17:23 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文档提供全国大学生信息安全竞赛部分题解,涵盖ECDSA密码学、Godot逆向、Next.jsRCE、PHP反序列化、数据分析及流量分析。文含攻击脚本与Payload,展示获取Flag过程,实战性强,对CTF选手具较高参考价值。 综合评分: 89 文章分类: CTF,WEB安全,逆向分析,漏洞分析


cover_image

第十九届全国大学生信息安全竞赛部分题解

赛查查

2025年12月31日 09:06 北京

以下文章来源于夜天炫安全 ,作者花千树 only9464

夜天炫安全 .

关于windows、安卓逆向、web安全以及CTF、护网、SRC的干活都在这里啦

“三题干碎网安梦,师傅我是计科人(汽车人)”

感谢参赛队伍:能不能一把梭哈   提供的题解

(只有题解,没有解析,后面会单出)

一、ECDSA

这个是一个密码学的题目,使用如下代码

from ecdsa import NIST521pfrom hashlib import sha1, sha512, md5from Crypto.Util.number import inverse, long_to_bytesimport binascii
curve = NIST521pn = curve.order
def nonce(i):    seed = sha512(b"bias" + bytes([i])).digest()    return int.from_bytes(seed, "big") % n
# 读取 signatures.txtsigs = []with open("signatures.txt") as f:    for line in f:        m_hex, sig_hex = line.strip().split(":")        msg = binascii.unhexlify(m_hex)        sig = binascii.unhexlify(sig_hex)
        r = int.from_bytes(sig[:66], "big")        s = int.from_bytes(sig[66:], "big")
        z = int.from_bytes(sha1(msg).digest(), "big")        sigs.append((msg, r, s, z))
# 用第一条签名恢复私钥msg, r, s, z = sigs[0]k = nonce(0)d = (s * k - z) * inverse(r, n) % n# 私钥字节(521 位 → 66 字节)priv_bytes = long_to_bytes(d, 66)# 计算 MD5priv_md5 = md5(priv_bytes).hexdigest()print("私钥:", hex(d))print("MD5(私钥):", priv_md5)

可以输出:

私钥: 0xe109b2b0a3d9acdd5f642935b2d1539d79583685a92959e929d8a9c1aa8965ee33bd3dfc9e2d37c147d0d1ab17016ba28a2840bb030d2dc9354b1da1209b3cf1MD5(私钥): 85d22caffd854b0726a98a2698527898

但是到这里还是不对的,因为需要的是私钥10进制的md5

简单的用脚本转码或者在线转码也可以

from hashlib import md5
d = int(    "e109b2b0a3d9acdd5f642935b2d1539d79583685a92959e929d8a9c1aa8965ee33bd3dfc9e2d37c147d0d1ab17016ba28a2840bb030d2dc9354b1da1209b3cf1",    16)
s = str(d)  # 十进制字符串print("flag{" + md5(s.encode()).hexdigest() + "}")

获得答案:flag{581bdf717b780c3cd8282e5a4d50f3a0}

二、babygame

godot引擎,直接用

gdsdecomp反编译一把梭哈:

可以看到是有脚本验证,AES加密,但是这样解不行,再翻翻,发现:

密钥会被更换:

所以正确的密钥是:FanBglFanBglOoO!

AES-ECB模式,直接解得:flag{wOW~youAregrEaT!}

三、redjs

看到是react和nextjs:

没跑了,是CVE-2025-55182,还是用工具

Nextjs_RCE_Exploit_Tool一把梭哈:

flag{f3787f4f-3c39-47da-b84e-1d52fd36591e}

四、hellogate

这个进来就是一张图片,下载下来发现图片的末尾有东西:

是源码,意思是php的反序列化漏洞,直接构造payload进行尝试:

最后是:

data=O:1:"A":1:{s:6:"handle";O:1:"B":1:{s:6:"worker";O:1:"C":1:{s:3:"cmd";s:5:"/flag";}}}

此时返回的图片再看,就能在末尾发现flag:

flag{d26431d1-8516-48e6-9406-cf88dd80b366}

五、The Silent Heist

算出每个特征的分布特性以及特征间的相关性,计算稳健的协方差矩阵,使用Copula方法生成数据,调整参数,满足题目要求。

返回flag:

flag{a0efa425-ba1b-412b-ace3-94b8c3fb69cf}

六、SnakeBackdoor-1

从这开始是连续的三个流量分析,都是同一个包

使用wireshark打开流量包,使用命令:http.request.method == POST&&http.request.uri contains “login”筛选找到最后一个打开看到登录后台的密码

七、SnakeBackdoor-2

搜索字符串SECRET_KEY,定位到如图

成功提取c6242af0-6891-4510-8432-e1cdf051f160

八、SnakeBackdoor-3

用:http.request.method == POST&&http.request.uri contains “preview”

查找数据包

使用python代码经行循环解密

输出解密成功的源代码

得到flag{v1p3r_5tr1k3_k3y}


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:赛查查 《第十九届全国大学生信息安全竞赛部分题解》

评论:0   参与:  0