新冠疫苗 RSA Challenge:进制构造素数漏洞拆解
博客基础信息标题新冠存在疫苗 challenge RSA 题型完整解题记录标签CTF、Crypto、RSA 分解、进制漏洞、FactorDB、新手向难度Medium 涉及考点自定义素数生成逻辑、RSA 原理、大数分解局限性、在线分解库使用前言本次 CTF Crypto 题为「新冠存在 疫苗 challenge_name」出题人构造了特殊 RSA 素数生成逻辑人为制造 p、q 强关联看似需要暴力枚举进制字符串实际本地算力完全无法完成遍历最优解借助 FactorDB 大数分解库直接获取因子完成标准 RSA 解密拿到 flag。下文完整记录源码分析、踩坑过程、解题步骤与原理总结。一、题目附件文件1. challenge.py 源码python运行import random import gmpy2 e 0x10001 # 固定公钥指数65537 with open(flag.txt, rb) as f: m f.read() m int.from_bytes(m, big) while True: # 随机生成256位大数p p random.getrandbits(256) # 核心漏洞将p转为三进制字符串再直接转十进制数字作为q q int(gmpy2.digits(p, 3)) # 素数合法性校验 if not gmpy2.is_prime(p): continue if not gmpy2.is_prime(q): continue # 保证e存在模逆规避RSA加密失效 if (p-1) % e 0: continue if (q-1) % e 0: continue break n p * q assert 0 m n c pow(m, e, n) print(f{n }) print(f{e }) print(f{c })2. output.txt 输出密文与公钥plaintextn 12189464288007059657184858632825479990912616419482466046617619319388181010121359489739982536798361842485210016303524715395474637570227926791570158634811951043352789232959763417380155972853016696908995809240738171081946517881643416715486249 e 65537 c 10093874086170276546167955043813453195412484673031739173390677430603113063707524122014352886564777373620029541666833142412009063988439640569778321681605225404251519582850624600712844557011512775502356036366115295154408488005375252950048742二、漏洞原理深度分析1. 标准安全 RSA 逻辑安全 RSA 要求两个素数 p、q 完全独立随机生成模数np*q依靠大数分解困难性保证加密安全没有数学关联无法快速拆分。2. 本题致命构造缺陷题目核心漏洞代码python运行q int(gmpy2.digits(p, 3))执行流程拆解将大素数 p 转换为仅包含 0、1、2 三种字符的三进制字符串 S直接把字符串 S 当作十进制数字转换得到另一个素数 q 数学约束关系 设字符串 Spint(S,3)qint(S,10)满足 p*qn。3. 暴力枚举方案为什么完全行不通通过对数估算字符串 S 长度 L n≈30**L模数 n 总位数 239 位 log_{10}(30)×L≈239计算得 L≈162。 需要枚举162 位仅由 0/1/2 组成的字符串总组合数 3**162≈1.96×10**77。 即便电脑每秒遍历 10 亿条候选所需时间远超宇宙现有年龄本地 DFS、BFS 循环只会无限卡死暴力路线直接放弃。三、踩坑实录做题全过程翻车点坑 1简易枚举仅判断整除出现无效因子 q1最初编写循环遍历候选 q仅通过n%q0筛选因子数字 1 可以整除任意大数程序直接判定 q1后续校验int(base3(p))q触发断言报错属于校验条件缺失导致的错误分解。坑 2递归 DFS 构造字符串栈溢出崩溃使用递归深度优先拼接 0/1/2 生成字符串字符串长度持续增加递归层数突破 Python 默认栈上限直接抛出递归深度超限报错。坑 3改用 BFS 迭代队列程序长期卡死无输出替换无递归 BFS 队列代码虽然规避栈溢出但候选数量指数爆炸CPU 满载持续运行几小时无任何匹配结果算力完全不足以支撑搜索。坑 4CtrlC 终止程序弹出 KeyboardInterrupt程序卡死手动按CtrlC停止控制台抛出KeyboardInterrupt属于正常手动中断信号并非代码逻辑 bug无需修改代码。四、正确解题方案FactorDB 在线大数分解操作步骤打开 FactorDB 官网https://factordb.com将题目给出完整超长 n 数值粘贴至输入框点击查询查询结果显示 FFFully Factored完全分解点击 show 展开两个素因子记录两个素数78 位 p、162 位 q。RSA 完整解密代码python运行import gmpy2 # 题目公钥参数 n 12189464288007059657184858632825479990912616419482466046617619319388181010121359489739982536798361842485210016303524715395474637570227926791570158634811951043352789232959763417380155972853016696908995809240738171081946517881643416715486249 e 65537 c 10093874086170276546167955043813453195412484673031739173390677430603113063707524122014352886564777373620029541666833142412009063988439640569778321681605225404251519582850624600712844557011512775502356036366115295154408488005375252950048742 # 替换FactorDB查询到的两个素数 p FactorDB获取的78位素数 q FactorDB获取的162位素数 # RSA解密流程 phi (int(p) - 1) * (int(q) - 1) d gmpy2.invert(e, phi) m gmpy2.powmod(c, d, n) # 整数转回字节明文 flag_raw m.to_bytes((m.bit_length() 7) // 8, big) print(最终Flag, flag_raw.decode())RSA 解密数学原理回顾欧拉函数φ(n)(p−1)(q−1)私钥 d 是 e 在模φ(n)下的乘法逆元 de**−1 (mod φ(n))明文计算公式mc**d (mod n)将大整数 m 转为二进制字节流解码得到可读 flag 字符串。五、核心知识点总结RSA 安全根基在于两个素数相互独立出题人构造进制关联素数会直接破坏模数安全性进制转换生成素数是 CTF 高频套路p、q 共享同一串 0/1/2 字符制造可分解后门字符串长度超过 20 位后暴力枚举空间指数爆炸本地普通电脑完全无解FactorDB 是 CTF RSA 题型通用捷径出题人通常提前上传模数分解结果优先使用做题思路优先级先数学估算搜索空间再选择工具不要无脑写暴力循环浪费时间。六、拓展学习方向Coppersmith 小根攻击、LLL 格基约减SageMath 实现无库分解yafu、msieve 本地高性能大数分解工具同类构造 RSA 题型p 与 q 共享高低位、pkqr、双素数同进制衍生等。结尾结语这道「新冠存在 疫苗 challenge_name」作为入门 Crypto RSA 题很好地提醒选手遇到特殊构造素数不要第一时间写暴力代码先通过数学计算判断可行性在线分解库能大幅降低解题成本是 CTF 比赛必备技巧。

相关新闻

当你的浏览器成为资源宝库:3分钟解锁全网视频音频的智能下载新体验

当你的浏览器成为资源宝库:3分钟解锁全网视频音频的智能下载新体验

当你的浏览器成为资源宝库:3分钟解锁全网视频音频的智能下载新体验 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader …

2026/7/7 1:11:50 阅读更多 →
Spring Boot集成微信登录:OAuth2.0授权码模式实战与避坑指南

Spring Boot集成微信登录:OAuth2.0授权码模式实战与避坑指南

1. 项目概述与核心价值 最近在做一个面向C端用户的应用,用户注册转化率一直是个头疼的问题。每次看到用户填写手机号、获取验证码、设置密码那一长串流程,我自己都觉得麻烦,更别说用户了。流失率最高的环节往往就在这里。为了解决这个问题&a…

2026/7/7 1:07:48 阅读更多 →
literally 加强语气,≈简直、真的、实在是,无“字面”含义,纯感叹

literally 加强语气,≈简直、真的、实在是,无“字面”含义,纯感叹

literally 简要解析(结合推文语境) 本义:字面上、逐字地(区分比喻义) 例:I literally cried 我真的哭了(不是夸张)口语高频用法(推文这句就是):加…

2026/7/7 1:07:48 阅读更多 →

最新新闻

本地化图生图解决方案:部署与优化实战指南

本地化图生图解决方案:部署与优化实战指南

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 1. 为什么我们需要本地化图生图解决方案 去年夏天,我帮一位设计师朋友处理紧急项目时,第一次深刻体会到云端A…

2026/7/7 2:12:06 阅读更多 →
Linux 下装 Oracle 11g 总失败?这套 UDEV + ASM + GRID 实战教程,帮你一次搞定

Linux 下装 Oracle 11g 总失败?这套 UDEV + ASM + GRID 实战教程,帮你一次搞定

📥 想跟着视频一步步操作? 文章末尾有 10 节完整视频 安装包 配置文件 的网盘下载链接,保存后随时回看。 你是不是也这样? 搜了一圈 Linux 下装 Oracle 11g 的教程,结果不是环境没配好,就是 UDEV 磁盘识别…

2026/7/7 2:12:06 阅读更多 →
【Bug已解决】OpenClaw macOS 报错 Operation not permitted 完全磁盘访问权限解决方案

【Bug已解决】OpenClaw macOS 报错 Operation not permitted 完全磁盘访问权限解决方案

【Bug已解决】OpenClaw macOS 报错 Operation not permitted 完全磁盘访问权限解决方案 1. 问题描述 在 macOS 上启动 OpenClaw 时,终端报出权限被拒绝的错误: zsh: operation not permitted尤其是在涉及读写某些系统敏感目录(如访问其他应用…

2026/7/7 2:10:06 阅读更多 →
Cadence Allegro 17.4 电源完整性(PI)设计:解决3A大电流下的电源压降超标问题

Cadence Allegro 17.4 电源完整性(PI)设计:解决3A大电流下的电源压降超标问题

Cadence Allegro 17.4 电源完整性设计实战:3A大电流场景下的压降优化策略1. 电源完整性设计的核心挑战与解决框架在高速嵌入式硬件设计中,电源分配网络(PDN)如同人体的血液循环系统,其稳定性直接决定整个系统的可靠性。…

2026/7/7 2:08:05 阅读更多 →
做了五年React,我转型做了AI应用前端

做了五年React,我转型做了AI应用前端

一个做了五年前端开发的程序员,在"设计稿到代码"的AI工具让外包需求暴跌之后,找到了新的战场。一、五年React,切图仔的天花板 2024年10月,我在一家做SaaS产品的公司当前端工程师,五年工龄。React TypeScrip…

2026/7/7 2:08:05 阅读更多 →
每日一个开源项目(第152篇):SAG - 用 SQL JOIN 代替 PageRank 做多跳 RAG 检索

每日一个开源项目(第152篇):SAG - 用 SQL JOIN 代替 PageRank 做多跳 RAG 检索

引言 “图谱 RAG 的标准做法是离线构建全局图谱,然后用 PageRank 做查询时的评分扩展——但 PageRank 有衰减,链条越长分数越低。SAG 转而用 SQL JOIN 在查询时动态扩展,没有衰减,也不需要提前构建全局图谱。” 这是"每日一个…

2026/7/7 2:08:05 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻