NepCTF 2025 部分wp
字数 1215 2025-09-01 11:26:03
NepCTF 2025 CTF竞赛部分题目解析
Misc 类别
MoewBle喵泡
- 解题关键:关于毅力这一块(),真给他打通关了
- Flag:
NepCTF{94721248-773d-0b25-0e2d-db9cac299389}
Speedmino
- 解题关键:关于毅力这一块()2600分还是太简单了,不过flag位于下方
- 注意事项:需要多打几分钟才能拿到flag,容易忘记截图
NepBotEvent
- 解题方法:直接使用脚本恢复即可
Crypto 类别
Nepsign
-
签名原理:
- 利用哈希链进行签名验证
- 通过对链上的哈希值进行一定次数变换并与公钥比较来验签
- 签名过程:对私钥进行step次数的哈希得到签名结果
-
攻击方法:
- 相同step会产生相同位置的签名
- step与消息哈希值相关
- 可利用其他消息(在某位置产生相同step)进行签名
- 需要爆破全部48位
- 优化:一次碰撞一个字节(约6分钟完成)
ezRSA2
- 解题步骤:
- 使用中国剩余定理(CRT)得到部分私钥dd
- 实际d = dd + k₁×tmp(tmp为所有模数乘积)
- 利用维纳攻击思路扩展:
- 原维纳攻击适用于d < N^0.25
- 本题d固定675位,需要改进方法
- 构造方程:e(dd + k₁×tmp) - 1 = k₂(N - p - q + 1)
- 整理得到:e·dd - 1 + k₁e·tmp + k₂(N + 1) = k₂(p + q)
- 构造格基:
(k₁, 1, k₂) × | 1 e·tmp | | 1 e·dd-1 | | N+1 | - 参数调整:k₁≈2^340, k₂≈2^670,需额外配平参数K₁=2^1400, K₂=2^1700
- 最终得到私钥
Lattice Bros
- 解题方法:
- 使用LLL算法计算精确代数值的极小多项式
- 对于多项式a₀ + a₁x + ... + a_dx^d = 0,构造格:
(a₀,a₁,...,a_d) × | 1 0 ... 0 ⌊α⁰M⌋ | | 0 1 ... 0 ⌊α¹M⌋ | | ... | | 0 0 ... 1 ⌊αᵈM⌋ | - 使用Sage内置方法计算极小多项式得到a₀
- 转化为Hidden Number Problem (HNP)模板题
- 常见错误:忘记考虑取反的情况
Web 类别
Groovy & RevengeGroovy
- 漏洞利用:
- 相关CVE:CVE-2015-1427(Groovy注入漏洞)
- 有效Payload示例(来自POC):
// Groovy注入代码示例
JavaSeri
- 解题方法:
- 识别为Shiro框架
- 使用自动化工具直接攻击("一把梭"方法)
总结与学习要点
-
密码学方向:
- 掌握哈希链签名原理及攻击方法
- 深入理解中国剩余定理在RSA中的应用
- 学习LLL算法和格基约减技术
- 熟悉HNP问题的解决方法
-
Web安全方向:
- 了解Groovy语言的安全问题
- 掌握Shiro框架的常见漏洞利用方法
-
Misc方向:
- 培养耐心和毅力解题的能力
- 注意题目中的隐藏信息(如flag位置)
-
工具使用:
- 熟练使用SageMath进行密码学计算
- 掌握自动化漏洞利用工具
-
比赛技巧:
- 注意记录解题过程(截图等)
- 合理分配时间,避免在简单题目上花费过多时间