新冠疫苗 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 比赛必备技巧。

相关新闻

NAT 穿透详解:STUN / TURN / ICE

NAT 穿透详解:STUN / TURN / ICE

NAT 穿透详解:STUN / TURN / ICEWebRTC 要实现 P2P,最大的障碍是 NAT。大部分设备都在路由器后面,没有公网 IP,怎么直连?这篇讲 NAT 是什么、STUN 怎么发现公网地址、TURN 怎么中继、ICE 怎么整合两者选最优路径。大家…

2026/7/7 1:07:46阅读更多 →
【OpenHarmony/HarmonyOs 】CheckMe 性能优化中心实践:资源健康评分、一键整理与本地缓存清理

【OpenHarmony/HarmonyOs 】CheckMe 性能优化中心实践:资源健康评分、一键整理与本地缓存清理

【OpenHarmony/HarmonyOs 】CheckMe 性能优化中心实践:资源健康评分、一键整理与本地缓存清理 本文基于 CheckMe 项目的性能优化中心展开,聚焦资源健康评分、一键整理、本地缓存清理和优化建议生成,适合用于讲解 HarmonyOS 工具类应用的状态评…

2026/7/7 1:07:46阅读更多 →
AI模型搭建的常见认知误区

AI模型搭建的常见认知误区

需求理清楚再动手很多普通开发者第一次接触这个方向,都会把AI模型搭建等同于下载预训练模型运行,觉得找个模型改两行配置跑起来,就算完成搭建了。实际上这种理解太窄,AI模型搭建是从需求定义到最终可交付使用的全流程,…

2026/7/7 1:07:46阅读更多 →
为什么别家视频孪生总丢目标?CameraGraph拓扑图谱从底层解决跨镜追踪漂移痛点

为什么别家视频孪生总丢目标?CameraGraph拓扑图谱从底层解决跨镜追踪漂移痛点

为什么别家视频孪生总丢目标?CameraGraph拓扑图谱从底层解决跨镜追踪漂移痛点一、行业共性:市面视频孪生频繁丢目标、ID漂移的三大底层根源市面上绝大多数视频孪生跨镜追踪全程依托ReID外观特征匹配做身份关联,技术范式停留在「二维图像比对」…

2026/7/7 2:27:53阅读更多 →
【单片机毕业设计】基于 STM32 的智能循迹避障小车控制系统设计,基于单片机的多功能智能小车感知检测系统开发(017401)

【单片机毕业设计】基于 STM32 的智能循迹避障小车控制系统设计,基于单片机的多功能智能小车感知检测系统开发(017401)

文章目录 20 个相关毕业设计备选题目项目研究背景摘要总体方案一、核心硬件清单及选型说明二、整体硬件搭建方案 核心功能一、核心自主行驶功能二、模式切换与预警功能三、辅助监测可视化功能 技术路线项目演示关于我们项目案例源码获取 博主介绍:✌️码农一枚 &…

2026/7/7 2:27:53阅读更多 →
全栈大模型智能体系统架构:从模型调用到自主协作的工程实践

全栈大模型智能体系统架构:从模型调用到自主协作的工程实践

一、引言:架构范式的根本转移 当大模型(LLM)的能力逐渐同质化,基于Agent(智能体)的应用架构正在成为新的技术护城河。2026年AI技术生态迎来了一个关键转折:单一模型能力已无法满足复杂业务需求&…

2026/7/7 2:27:53阅读更多 →
FlaUInspect:革新UI自动化测试的现代化元素检查器

FlaUInspect:革新UI自动化测试的现代化元素检查器

1. 项目概述:为什么我们需要FlaUInspect? 如果你做过UI自动化测试,尤其是基于微软UI自动化(UIA)框架的,那你一定对“找元素”这个环节又爱又恨。爱的是,一旦元素定位稳定,自动化脚本…

2026/7/7 2:27:53阅读更多 →
2.4 数据治理 vs 数据管理 vs 数据运维:三者的边界、协同与“定战略、抓执行、保稳定”的逻辑

2.4 数据治理 vs 数据管理 vs 数据运维:三者的边界、协同与“定战略、抓执行、保稳定”的逻辑

2.4 数据治理 vs 数据管理 vs 数据运维:三者的边界、协同与“定战略、抓执行、保稳定”的逻辑2.4.1 概念辨析:治理、管理、运维的本质区别2.4.2 数据治理:定战略——数据的“立法与司法”机构核心定义核心活动责任主体:业务 管理…

2026/7/7 2:27:53阅读更多 →
翡翠定制怕货不对版?从选料、设计到复检的完整避坑指南

翡翠定制怕货不对版?从选料、设计到复检的完整避坑指南

靠谱的翡翠定制,核心不在于商家喊“包你满意”,而在于他敢不敢把选料、设计、加工到复检的每一步,都变成可核对、可留痕的流程。以四会源头工厂“臻世祥”为观察样本,我们来看一套可验证的定制避坑标准,以及如何用这套…

2026/7/7 2:22:53阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/6 4:26:20阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/6 2:48:33阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/7 1:03:28阅读更多 →
Acunetix v24.8 深度解析:DAST漏洞扫描器核心原理与DevSecOps实践

Acunetix v24.8 深度解析:DAST漏洞扫描器核心原理与DevSecOps实践

1. 项目概述:Acunetix v24.8 高级版漏洞扫描器深度解析作为一名在网络安全领域摸爬滚打多年的老兵,我深知一款趁手的“兵器”对于安全测试工作意味着什么。今天要聊的,就是Web应用安全测试领域里一个响当当的名字——Acunetix。特别是其v24.8…

2026/7/7 0:02:41阅读更多 →
国产化信创改造:达梦/人大金仓适配与多数据库兼容方案实战(SpringBoot)

国产化信创改造:达梦/人大金仓适配与多数据库兼容方案实战(SpringBoot)

国产化信创改造:达梦/人大金仓适配与多数据库兼容方案实战(SpringBoot) 🌐 演示地址:http://ruoyioffice.com | 📦 源码1GitHub:ruoyi-office | 📦 源码2GitCode:ruoyi-o…

2026/7/7 0:02:41阅读更多 →
CentOS 7/8 SSH 连接失败:5步系统性排错流程与决策树

CentOS 7/8 SSH 连接失败:5步系统性排错流程与决策树

CentOS SSH连接故障排查:从基础检查到深度修复的完整指南引言当你尝试通过Xshell或其他SSH客户端连接CentOS服务器时,突然遭遇"Connection refused"或"Connection timed out"的错误提示,这种经历对任何运维人员或开发者来…

2026/7/7 0:02:41阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/6 4:45:01阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/6 4:45:01阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/6 4:45:03阅读更多 →