当前位置:网站首页>2022强网杯CTF---强网先锋 ASR wp
2022强网杯CTF---强网先锋 ASR wp
2022-08-01 16:20:00 【3tefanie丶zhou】
题目
题目代码:
from Crypto.Util.number import getPrime
from secret import falg
pad = lambda s:s + bytes([(len(s)-1)%16+1]*((len(s)-1)%16+1))
n = getPrime(128)**2 * getPrime(128)**2 * getPrime(128)**2 * getPrime(128)**2
e = 3
flag = pad(flag)
print(flag)
assert(len(flag) >= 48)
m = int.from_bytes(flag,'big')
c = pow(m,e,n)
print(f'n = {
n}')
print(f'e = {
e}')
print(f'c = {
c}')
''' n = 8250871280281573979365095715711359115372504458973444367083195431861307534563246537364248104106494598081988216584432003199198805753721448450911308558041115465900179230798939615583517756265557814710419157462721793864532239042758808298575522666358352726060578194045804198551989679722201244547561044646931280001 e = 3 c = 945272793717722090962030960824180726576357481511799904903841312265308706852971155205003971821843069272938250385935597609059700446530436381124650731751982419593070224310399320617914955227288662661442416421725698368791013785074809691867988444306279231013360024747585261790352627234450209996422862329513284149 '''
思路
首先对n进行分解得到4个素数,p、q、r、t,可以使用在线的factordb网站分解,也可以用yafu(使用该工具建议先开方,然后将其值再分解)
在线分解网站factordb分解结果
yafu分解结果
分解得到四个素数如下
p = 225933944608558304529179430753170813347
q = 260594583349478633632570848336184053653
r = 218566259296037866647273372633238739089
t = 223213222467584072959434495118689164399
正常情况下的RSA都要求e和phi(n)要互素,不过也有一些e和phi(n)有很小的公约数的题目,这些题目可以通过计算e对phi(n)的逆元d来求解。但是本题则为e和phi(n)的最大公约数就是e本身,也就是说e | p-1,只有对c开e次方根才行,到这里就是一个有限域开3次方根的问题了。PS:上述中的phi(n)也可以是,(p-1)或者(q-1)或者(r-1)或者(t-1)
将同余方程
m e ≡ c ( mod n ) m^e \equiv c \quad (\text{mod}\ n) me≡c(mod n)
简化为
m e ≡ c ( mod p ) m^e \equiv c \quad (\text{mod}\ p) me≡c(mod p)
m e ≡ c ( mod q ) m^e \equiv c \quad (\text{mod}\ q) me≡c(mod q)
m e ≡ c ( mod r ) m^e \equiv c \quad (\text{mod}\ r) me≡c(mod r)
m e ≡ c ( mod t ) m^e \equiv c \quad (\text{mod}\ t) me≡c(mod t)
然后分别在GF(p)、GF(q)、GF(r)、GF(t)上对c开e=3次方根,再用CRT组合一下即可得到在mod n下的解
解题脚本
sage脚本如下
import libnum
n = 8250871280281573979365095715711359115372504458973444367083195431861307534563246537364248104106494598081988216584432003199198805753721448450911308558041115465900179230798939615583517756265557814710419157462721793864532239042758808298575522666358352726060578194045804198551989679722201244547561044646931280001
e = 3
c = 945272793717722090962030960824180726576357481511799904903841312265308706852971155205003971821843069272938250385935597609059700446530436381124650731751982419593070224310399320617914955227288662661442416421725698368791013785074809691867988444306279231013360024747585261790352627234450209996422862329513284149
p = 225933944608558304529179430753170813347
q = 260594583349478633632570848336184053653
r = 218566259296037866647273372633238739089
t = 223213222467584072959434495118689164399
R.<x> = Zmod(p)[]
f = x^e-c
f = f.monic()
results1 = f.roots()
R.<x> = Zmod(q)[]
f = x^e-c
f = f.monic()
results2 = f.roots()
R.<x> = Zmod(r)[]
f = x^e-c
f = f.monic()
results3 = f.roots()
R.<x> = Zmod(t)[]
f = x^e-c
f = f.monic()
results4 = f.roots()
for i in results1:
for j in results2:
for l in results3:
for k in results4:
param1 = [int(i[0]),int(j[0]),int(l[0]),int(k[0])]
param2 = [p,q,r,t]
m = CRT_list(param1,param2)
flag = libnum.n2s(int(m))
if b'flag' or b'gwb' or b'FLAG' or b'GWB' in flag:
print(flag)
flag:
flag{
Fear_can_hold_you_prisoner_Hope_can_set_you_free}
【有些不愿开口与人说的委屈,来自得不到身边人的回应,种种期许、憧憬、愿望之心声,在心中如擂鼓,响彻自己天地间。心外却哑然,永远寂静无声,这就像一个人把嗓子喊哑了,身边还是无人听见,这个人就会越来越不喜欢说话,一直沉默下去,直到变成一个哑巴。】
边栏推荐
- Meeting OA project (6) --- (to-be-opened meeting, historical meeting, all meetings)
- Shell basic function writing
- 2022年7月最热的10篇AI论文
- 测试技术|白盒测试以及代码覆盖率实践
- 27英寸横置大屏+实体按键,全新探险者才是安全而合理的做法
- Can MySQL do two-way synchronization of multiple vps?
- intentservice使用(Intention)
- 08 spark 集群搭建
- 面对营销难,有米云指出一条破局之路
- PAT 甲级 A1003 Emergency
猜你喜欢

How to Efficiently Develop Jmix Extension Components

Using Canvas to achieve web page mouse signature effect

BPM是什么意思?BPM的优势及好处有哪些?

使用Canvas 实现手机端签名

mysql 面试题

27英寸横置大屏+实体按键,全新探险者才是安全而合理的做法!

AI艺术‘美丑’不可控?试试 AI 美学评分器~

LeetCode50天刷题计划(Day 7—— 字符串转换整数 (atoi) 12.20-15.20)

短剧正在抢长剧的生意
![MySQL [create and manage tables]](/img/5f/fc5d278f32df859e2c454b6d8467ed.png)
MySQL [create and manage tables]
随机推荐
Synchronized原理
70后夫妻给苹果华为做“雨衣”,三年进账7.91亿
请问nacos 连接mysql失败后会重新连接吗?
Ranking of itineraries (summer vacation daily question 12)
向mysql 传数据 这个字符串长度有限制么
08 spark 集群搭建
指针进阶(二)
商业智能BI业务分析思维:供应链分析 - 什么是牛鞭效应(一)
京东软件测试面试题,仅30题就已经拯救了50%的人
LeetCode50天刷题计划(Day 6—— 整数反转 14.20-15.20)
The untiy Resources directory dynamically loads resources
比对软件-blastN结果详解
Flink - SQL can separate a certain parallelism of operator node configuration?
南京科技大学、中国电子科技第28研究所等联合|MLRIP: Pre-training a military language representation model with informative factual knowledge and professional knowledge base(预训练具有丰富事实知识和专业知识库的军事语言表示模型)
面试必问的HashCode技术内幕
Convert tensor to image in pytorch
短剧正在抢长剧的生意
链滴的几个 Markdown 语法没有渲染
1 缺陷规范
重庆银河证券股票开户安全吗,是正规的证券公司吗