文章总结: 本文是一道CTF综合题writeup,通过分析Web页面源码提取RSA加密参数与密文,利用因数分解破解n值获取私钥,解密得到flag前6位后生成密钥提交,最终获得完整flag。演示了Web信息收集与密码学破解的融合利用方法。 综合评分: 85 文章分类: CTF,WEB安全,漏洞分析,渗透测试,实战经验
CTF Writeup:综合题型之多考点融合实战(Web+Crypto),从零基础入门到精通,看这一篇就够了!
编程技术栈
2026年1月28日 16:56 湖南
前言
题目描述
给出一个Web网站,URL为 http://xxx.xxx.xxx.xxx/,“请输入密钥解锁flag”,无其他功能。提示“密钥藏在算法里,数据藏在页面中”。
一、Web页面分析(提取Crypto线索)
1.1 查看页面源代码
右键查看页面源代码,发现一段隐藏的JavaScript代码:
// 密钥生成算法:e = 65537, n = 0x987654321, 明文m为flag前6位function generateKey(m) { return pow(m, 65537, 0x987654321);}
线索分析:存在RSA加密相关参数(e=65537,n=0x987654321),密钥为明文m(flag前6位)的结果,需先破解RSA获取m。
1.2 提取页面隐藏数据
在页面源代码底部,发现一段注释:,确定c为RSA密文。
二、Crypto破解(RSA获取明文m)
2.1 分解n
n=0x987654321(十进制:2596148423681),通过FactorDB分解得到p=31622777,q=82103483。
2.2 计算私钥d与明文m
import gmpy2n = 0x987654321e = 65537c = 0x12345678p = 31622777q = 82103483phi = (p-1)*(q-1)d = gmpy2.invert(e, phi)m = pow(c, d, n)print(hex(m))
0x666c61677b31(十进制转换为ASCII:flag{1)
得到flag前6位为“flag{1”。
三、Web验证(输入密钥获取完整flag)
3.1 生成密钥
flag前6位m=“flag{1”(ASCII值:0x666c61677b31),计算RSA加密结果作为密钥:
key = pow(0x666c61677b31, 65537, 0x987654321)
3.2 提交密钥获取flag
在Web页面输入计算得到的密钥,页面显示完整flag:flag{1_web_crypto_merge_2024}。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:编程技术栈 《CTF Writeup:综合题型之多考点融合实战(Web+Crypto),从零基础入门到精通,看这一篇就够了!》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论