北京市第六届信息通信行业网络安全技能大赛(初赛)-CTF夺旗阶段 EZRSA writeup
题目EZRSA
EZRSA.py
from Crypto.Util.number import *
import gmpy2
from flag import m
p = getPrime(1024)
q = getPrime(1024)
n = p * q
e = 65537
miao = m * e ** 114514 * p
c = pow(miao,e,n)
print('n =',n)
print('c =',c)
n = 15724473323565045396370858465469794253897098805658297755038464795187843864543336878458855839908938174609226125906389647596135126780127853622918512750724133584255813225824621395423147937411028484797397604314549972831401569058888828390709389850009401999311919893801585196625261707533397394617900788093073155283942628090462027599299261904948019001134387413947227412444769837076744236033154179273077282052507015769350002149388500729755099921806453579133365664602172243156399457894104732823874214077421498887133708915560830956009329435645769146484681739460872512462904147532278669159028733288243011480246972212572785396951
c = 13979061528868934515991503434842402588520368874011952968148427460697509714748731073556587063579866682867476314979258657484882946029437582223157020767329942522520919760899855118050378516616088604837486252499316743832035392322851380083033361998393452998263670256288025282295743323558056979630144546247582020682237999855779926018311317468574189832558037678809876850876418649656848539996712475992846363312922214381030516807233491184673015387286304596658582165385106253842227343385240797371235750880819135427727076716569309407314242434870197756376022377417240138527121517361247185657355931682447584016791273217145770895952
解题思路
分析加密过程:
明文经过变换 miao = m * e^114514 * p,然后使用RSA加密得到密文 c。这里的模数 n = p * q,公钥指数 e = 65537。
利用GCD分解n:
由于 miao 包含因子 p,加密后的 c 也必然是 p 的倍数。通过计算 gcd(c, n) 可以分解出 p,进而得到 q = n // p。
计算私钥d:
使用欧拉函数 φ(n) = (p-1)(q-1) 和扩展欧几里得算法计算私钥 d,即 d ≡ e⁻¹ mod φ(n)。
解密得到miao:
用私钥 d 解密密文 c 得到 miao ≡ c^d mod n。由于 miao = m * e^114514 * p,这里需要进一步处理。
恢复明文m:
将 miao 除以 p 得到 temp = m * e^114514。接下来,在模 q 下计算 e^114514 的逆元,从而求得 m ≡ temp * inv(e^114514) mod q。
解题代码
import gmpy2
from Crypto.Util.number import long_to_bytes
n = 15724473323565045396370858465469794253897098805658297755038464795187843864543336878458855839908938174609226125906389647596135126780127853622918512750724133584255813225824621395423147937411028484797397604314549972831401569058888828390709389850009401999311919893801585196625261707533397394617900788093073155283942628090462027599299261904948019001134387413947227412444769837076744236033154179273077282052507015769350002149388500729755099921806453579133365664602172243156399457894104732823874214077421498887133708915560830956009329435645769146484681739460872512462904147532278669159028733288243011480246972212572785396951
c = 13979061528868934515991503434842402588520368874011952968148427460697509714748731073556587063579866682867476314979258657484882946029437582223157020767329942522520919760899855118050378516616088604837486252499316743832035392322851380083033361998393452998263670256288025282295743323558056979630144546247582020682237999855779926018311317468574189832558037678809876850876418649656848539996712475992846363312922214381030516807233491184673015387286304596658582165385106253842227343385240797371235750880819135427727076716569309407314242434870197756376022377417240138527121517361247185657355931682447584016791273217145770895952
# 分解n得到p和q
p = gmpy2.gcd(c, n)
q = n // p
# 计算phi(n)和私钥d
phi = (p - 1) * (q - 1)
e = 65537
d = gmpy2.invert(e, phi)
# 解密得到miao
miao = pow(c, d, n)
# 计算temp = m * e^114514
temp = miao // p # 因为miao = m * e^114514 * p,整除p得到m * e^114514
# 计算e^114514模q的逆元
e_exp_modq = pow(e, 114514, q)
inv_e_exp = gmpy2.invert(e_exp_modq, q)
# 计算m模q并恢复明文
m = (temp * inv_e_exp) % q
flag = long_to_bytes(m)
print(flag.decode())
北京市第六届信息通信行业网络安全技能大赛(初赛)-CTF夺旗阶段 EZRSA writeup的更多相关文章
- 2019西湖论剑网络安全技能大赛(大学生组)部分WriteUp
这次比赛是我参加以来成绩最好的一次,这离不开我们的小团队中任何一个人的努力,熬了一整天才答完题,差点饿死在工作室(门卫大爷出去散步,把大门锁了出不去,还好学弟提了几个盒饭用网线从窗户钓上来才吃到了午饭 ...
- 山东省网络安全技能大赛 部分writeup
web1 提示:ip不在范围内 直接抓包加client-ip: 127.0.0.1 即可得到flag web2 <?php include 'here.php'; $key = 'kela ...
- 2019西湖论剑网络安全技能大赛(大学生组)--奇怪的TTL字段(补充)
鉴于有人不会将得到的16进制数据在winhex中转成图片,我在这里写一个详细的步骤. 首先就是将六张图片的十六进制数据找出并提取出来. 打开winhex,新建一个文档. 大小可以选1bytes 将数据 ...
- 2021陕西省大学生网络安全技能大赛 Web ez_checkin
web ez_checkin 进去看了一会,啥也没找到,直接上dirsearch 扫到一个index.php~,打开看一看,是php审计 <?php error_reporting(0); in ...
- 2019"深思杯"山东省大学生网络安全技能大赛部分wp
签到 载入OD查看字符串 上下左右 这道题出来的时候真的是一点思路都没有,一直以为是什么编码来着,看了大佬们的 wp 原来是画图 拿大佬的脚本: from PIL import Image im = ...
- 通信行业OSS支撑系统软件研发思考
一般的,对所谓大型.通信行业.OSS支撑软件系统,我们可宏观定义以下几点: 以年计的研发周期 以几十人计的研发团队 以百计的业务菜单功能点 以千计的数据库表 以万计的业务术语指标 以亿计的数据表记录 ...
- 【技能大赛笔记01】Zigbee点对点按键控制程序开发
[技能大赛笔记01]Zigbee点对点按键控制程序开发 --2017年"物联网物联网技术应用与维护"任务五题1(中职组) 1.题目要求 2.工程文件 在比赛中,提供了一个基于Bas ...
- IM云通信行业步入快车道,谁将成为代表中国的全球IM“独角兽”?
2016年,Twilio的成功上市,以及抢眼的股价表现,拓宽了全球云通信行业的想象空间,行业内公司估值水平也集体上调. 在中国,IM云通信行业也从2016年开始进入了一个“黄金发展时期”,一批如融云. ...
- UE4学习心得:蓝图间信息通信的几种方法
蓝图间通信是一个复杂关卡能否正常运行的关键,笔者在这里提供几种蓝图类之间的信息交互方法,希望能对读者有所帮助. 1.类引用 这是最直接的一种蓝图类之间的信息交互方式.首先在Editor中创建2个Act ...
- 2018工业信息安全技能大赛华东赛区初赛 第2题 writeup
2018工业信息安全技能大赛华东赛区初赛 第2题 解题思路 本题主要考察点是对常见工控协议的理解(modbus/tcp和s7comm),题目目标是寻找出报文中某条异常报文流量.很让人疑惑的是,题目中并 ...
随机推荐
- 引燃算力新基建,天翼云亮相DCIC2024第13届数据中心产业发展大会!
近日,由中国通信企业协会主办的"第13届数据中心产业发展大会暨AIDC智能算力生态合作展览会"在北京顺利举行.现场展示了天翼云"AIDC""紫金&qu ...
- HTML标签-form表单
HTML标签-form表单 在Web开发中,HTML表单(form)是不可或缺的一部分,它承担着用户与Web服务器之间交互的重任.今天,我们就来详细探讨一下HTML中的form表单标签. 一.form ...
- presto集成iceberg
一.Presto服务下新建catelog cd /usr/local/service/presto/etc/catalog vim iceberg.properties connector.name= ...
- Hetao P1156 最大战力 题解 [ 绿 ][ 二分 ][ 最大子段和 ]
最大战力 Vjudge 原题 题解 形式化题意 给定两个数组 \(a[n]\) 和 \(b[n]\) ,需要在数组 \(b\) 中选择一个区间 \(b[l,r]\) ,替换掉区间 \(a[l,r]\) ...
- Drasi Reactions SDK
Drasi Reactions SDK 是一个跨语言的开发工具包,用于实现和处理 Drasi 平台的 Reactions(反应器)功能.该 SDK 目前支持三种主流编程语言:JavaScript/Ty ...
- 印度股票实时行情API数据源接口
StockTV API: 提供实时和历史行情数据,覆盖印度所有股票和指数,支持WebSocket和REST API接口.(推荐使用,对接简单,有技术支持) 新浪财经:提供股票市场数据,可以优先考虑 ...
- linux 删除文件提示 opration not permitted 处理方法(宝塔删除文件提示无法删除)
问题描述:linux系统中使用rm -rf强制删除文件,提示 opration not permitted,无法删除成功(宝塔删除文件提示无法删除),该问题确定为已关闭所有安全软件及防止恶意篡改的软件 ...
- python 二级 函数与代码复用
- uniapp vue3 setup + 云开发开发个人小程序
最近使用uniapp vue3 setup + 云开发开发了个人小程序,设计使用figma软件,看下成品截图吧(可以直接微信搜索[识光]小程序体验,或者最底部有码可以直接扫)
- Supervisor-进程守护工具
前言 Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启.它是通过fork/exec的方式把这些被管理 ...