NepCTF 2025 部分wp
字数 1215 2025-09-01 11:26:03

NepCTF 2025 CTF竞赛部分题目解析

Misc 类别

MoewBle喵泡

  • 解题关键:关于毅力这一块(),真给他打通关了
  • FlagNepCTF{94721248-773d-0b25-0e2d-db9cac299389}

Speedmino

  • 解题关键:关于毅力这一块()2600分还是太简单了,不过flag位于下方
  • 注意事项:需要多打几分钟才能拿到flag,容易忘记截图

NepBotEvent

  • 解题方法:直接使用脚本恢复即可

Crypto 类别

Nepsign

  • 签名原理

    • 利用哈希链进行签名验证
    • 通过对链上的哈希值进行一定次数变换并与公钥比较来验签
    • 签名过程:对私钥进行step次数的哈希得到签名结果
  • 攻击方法

    • 相同step会产生相同位置的签名
    • step与消息哈希值相关
    • 可利用其他消息(在某位置产生相同step)进行签名
    • 需要爆破全部48位
    • 优化:一次碰撞一个字节(约6分钟完成)

ezRSA2

  • 解题步骤
    1. 使用中国剩余定理(CRT)得到部分私钥dd
    2. 实际d = dd + k₁×tmp(tmp为所有模数乘积)
    3. 利用维纳攻击思路扩展:
      • 原维纳攻击适用于d < N^0.25
      • 本题d固定675位,需要改进方法
    4. 构造方程:e(dd + k₁×tmp) - 1 = k₂(N - p - q + 1)
    5. 整理得到:e·dd - 1 + k₁e·tmp + k₂(N + 1) = k₂(p + q)
    6. 构造格基:
      (k₁, 1, k₂) × | 1       e·tmp    |
                    |   1     e·dd-1   |
                    |         N+1      |
      
    7. 参数调整:k₁≈2^340, k₂≈2^670,需额外配平参数K₁=2^1400, K₂=2^1700
    8. 最终得到私钥

Lattice Bros

  • 解题方法
    1. 使用LLL算法计算精确代数值的极小多项式
    2. 对于多项式a₀ + a₁x + ... + a_dx^d = 0,构造格:
      (a₀,a₁,...,a_d) × | 1 0 ... 0 ⌊α⁰M⌋ |
                        | 0 1 ... 0 ⌊α¹M⌋ |
                        | ...           |
                        | 0 0 ... 1 ⌊αᵈM⌋ |
      
    3. 使用Sage内置方法计算极小多项式得到a₀
    4. 转化为Hidden Number Problem (HNP)模板题
    • 常见错误:忘记考虑取反的情况

Web 类别

Groovy & RevengeGroovy

  • 漏洞利用
    • 相关CVE:CVE-2015-1427(Groovy注入漏洞)
    • 有效Payload示例(来自POC):
      // Groovy注入代码示例
      

JavaSeri

  • 解题方法
    • 识别为Shiro框架
    • 使用自动化工具直接攻击("一把梭"方法)

总结与学习要点

  1. 密码学方向

    • 掌握哈希链签名原理及攻击方法
    • 深入理解中国剩余定理在RSA中的应用
    • 学习LLL算法和格基约减技术
    • 熟悉HNP问题的解决方法
  2. Web安全方向

    • 了解Groovy语言的安全问题
    • 掌握Shiro框架的常见漏洞利用方法
  3. Misc方向

    • 培养耐心和毅力解题的能力
    • 注意题目中的隐藏信息(如flag位置)
  4. 工具使用

    • 熟练使用SageMath进行密码学计算
    • 掌握自动化漏洞利用工具
  5. 比赛技巧

    • 注意记录解题过程(截图等)
    • 合理分配时间,避免在简单题目上花费过多时间
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₁≈2^340, k₂≈2^670,需额外配平参数K₁=2^1400, K₂=2^1700 最终得到私钥 Lattice Bros 解题方法 : 使用LLL算法计算精确代数值的极小多项式 对于多项式a₀ + a₁x + ... + a_ dx^d = 0,构造格: 使用Sage内置方法计算极小多项式得到a₀ 转化为Hidden Number Problem (HNP)模板题 常见错误 :忘记考虑取反的情况 Web 类别 Groovy & RevengeGroovy 漏洞利用 : 相关CVE:CVE-2015-1427(Groovy注入漏洞) 有效Payload示例(来自POC): JavaSeri 解题方法 : 识别为Shiro框架 使用自动化工具直接攻击("一把梭"方法) 总结与学习要点 密码学方向 : 掌握哈希链签名原理及攻击方法 深入理解中国剩余定理在RSA中的应用 学习LLL算法和格基约减技术 熟悉HNP问题的解决方法 Web安全方向 : 了解Groovy语言的安全问题 掌握Shiro框架的常见漏洞利用方法 Misc方向 : 培养耐心和毅力解题的能力 注意题目中的隐藏信息(如flag位置) 工具使用 : 熟练使用SageMath进行密码学计算 掌握自动化漏洞利用工具 比赛技巧 : 注意记录解题过程(截图等) 合理分配时间,避免在简单题目上花费过多时间