一周目的WP

文章介绍了几个解题案例,涉及逆元概念,利用欧拉函数进行计算,以及RSA加密中的爆破策略。在不同的题目中,作者通过分析题目条件,运用位运算、二进制转换和数学知识解决了一系列问题,包括确定未知数、计算因子等,最终目标是获取flag。案例中提到了中国剩余定理(CRT)在解题中的应用。
摘要由CSDN通过智能技术生成

这里的题目是朋友给我的,标题是一些提示哈,他们起的标题,是为了方便我写,题目来源好像是比赛的题目,具体哪个我也不知道现在,我的理解比较浅显,希望各位师傅指导。

1.这里是一些文章和学习方法哈,没有题目。

2.Whatis逆元

题目07336feb22e04568ab786e024723a8cc.jpg

 题目就给了提示哈,是利用逆元,题目给了a,b,n,但我构造不成功,问了学长,他给了思路哈,这里写一下

8e0a72766633405394c9c5b07ffe97d6.jpg

 这样就可以开始解题啦,运行脚本,获得falg。

4889400158284ba39228342f55602f60.png

3.howto爆破

题目

49569809a1994abba7b0f74cc5ed0c1a.jpg

 题目中给了n,还给了一个for循环,我们仔细观察一下这个for循环。i在1~n中,如果i与n互质,则num加上1。看到这里,我们可以想到欧拉函数的计算(欧拉函数有好几种情况的计算,这里是其中一种)。如果n是质数,则 φ(n)=n-1 。因为质数与⼩于它的每⼀个数,都构成互质关系。所以最终num=n-1。运行脚本,获得flag。88c1403bb9cf4adbbdab851e1c2fee69.jpg

4.完了,又泄露了

题目76f30b3c4eaa4452b141aedf7af4f347.jpg

首先,我们要分析一下题目,找到信息。题目写了,p,q是1024bit的(在数字领域,为了表达所能表现的状态的数量,使用一个叫“比特”的单位。 1024其实是 2的 10次方,我们把 8比特称为 1个字节),flag<<444,会输出flag的长度,以及c,N,p0的值。那54应该是flag的长度,那我们求一下flag的bit长度。

0c3d748660cc4c58907d0524122fd499.jpg

flag是431bit,p是1024bit,flag<<444,这相当于在flag的二进制后面添加444个0,也就是说,此时flag为875bit。(这里用到异或,异或 : 相同为0,不同为1 ,任何二进制数与零异或,都会等于其本身)这里的数据就是二进制,所以p的后444位是不变的,即知道 p_low 444位。1024-875=149 , 所以 异或 时 p的高149位没有数与其异或,即p_high 已知149位。

b805bf4dbf8541e0b8c94bec675592d8.jpg

(因为我不会写脚本算出p_high和p_low,所以就只能用工具先把p0转化成二进制后获取了) 把p0的数据从十进制转为二进制,前149位数为p_high,后444位数为p_low。即已知p的高位和低位,求p的中间位。mm 为 m 的前431位(不算0b) ,因为 m<< 444, 最后444位全是0。运行脚本,获得flag。

b9b135686f534ee1a8f225b7600ad099.png

 这里用到的是sagemath网页版。

这里补充一次基础知识

0c492b4dbf1b424c9f9399a5f7fa8d81.jpg

 

5.又泄露了

题目

f87594aa65b34e0ca966a529a6e643fa.jpg

 分析一下,p,q是1024bit,e已知,已给出n,c,p0。由((p>>128)<<128))可知,这是p高位攻击,p0二进制最后128未知。我们将p0转化为二进制看看。

4e1c93603b634126bfeebbf91174b3be.png

 可见 p 低位的0已补齐,kbits为128( kbits 为 p 未知的二进制位数),运行脚本,获得flag。

bb530dec48da4feb94590f16509a990f.jpg

 现在对这个脚本进行一些解析。

(1)f=p_high+x,这里的x代表的是需要我们去求解的p低位。由((p>>128)<<128))我们知道,p0二进制最后128位(这128位是p低位)我们是不知道的。所以,这一部分未知的就是x。

(2)x = f.small_roots(X=2^128,beta=0.4), kbits 为 p 未知的二进制位数,这一步是求解根的上界。 

(3)p = p_high+int(x[0]),x[0] 为p的低位,p_high为p的高位,位数要对齐才能相加,所以在p高位后面加0,来补齐位数。

6.crt是什么鬼

题目

4668782f7c514a2bb8c5918e8e0f9c1b.jpg

标题就给了提示哈,要用到crt(CRT是中国剩余定理,这里只是用了小写),分析一下题目。gift = crt([x, y], [p, q]),我们在这看到了crt。所以有

gift ≡ x (mod p)
gift ≡ y (mod q)
k1p = gift - x
k2q = gift -y
N = k1p * k2q = (gift - x) * (gift - y) = k1 * k2 * n0

n = n >> 440 << 440,由这个我们可以知道这题应该是n高位攻击。所以我们构造

PR.<x> = PolynomialRing(Zmod(N))

f = n_high+x

我们求一下n0,这里n0是n高位+n低位,n低位是n未知的部分,这里是用x代替的。n高位就是题目给的n。

c926f4e95a2e4924aef5860dafa011d3.jpg

 n0是N的因子,求出n0后,求n0与k1p的最大公约数,可以解出p,之后就是正常的RSA解题了。

5a473b00e1824f2199fa05c10d316e00.jpg

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值