BUUCTF 每日打卡 2021-4-12

引言

周一整天都想睡
上周末的任务还没完成
哎。。。

RSA5

附件给了 e = 65537 和一串的 n 和 c
猜想是广播攻击
但是这个 e… 是不是有点大?
参考 ctfwiki 的广播攻击
在这里插入图片描述
其中有一个条件:n 要互素
我寻思出题人不会蠢到给个漏洞吧
然后忽略了这个条件,直接莽
用 sagemath 封装好的 CRT(中国剩余定理),算出 m e m^{e} me
在这里插入图片描述
然后一开根:
在这里插入图片描述
结果:
在这里插入图片描述
我人傻了
开出来不是整数(我囸)
看了别人的解法,才知道其中有两个 n 是不互素的(啊这)
这波是聪明反被聪明误
代码如下:

from Crypto.Util.number import *
import gmpy2

e = 65537
list_n = []
list_c = []
with open('1.txt', 'r') as f:
    l = f.readlines()
for line in l:
    if line[0] == 'n':
        list_n.append(int(line.replace('\n', '').replace(' ', '')[2:]))
    elif line[0] == 'c':
        list_c.append(int(line.replace('\n', '').replace(' ', '')[2:]))
print(list_n)
print(list_c)
for i in range(len(list_n)):
    for j in range(i+1, len(list_n)):
        if gmpy2.gcd(list_n[i], list_n[j]) != 1:
            p = gmpy2.gcd(list_n[i], list_n[j])
            k_p, k_q = i, j
            print(i, j)

n = list_n[k_p]
q = n//p
print(p, q)
c = list_c[k_p]
phi = (p-1)*(q-1)
d = inverse(e, phi)
m = pow(c, d, n)
print(long_to_bytes(m))

结果:flag{abdcbe5fd94e23b3de429223ab9c2fdf}

传感器

之前吐槽过
见我 2021-4-1的博客

结语

又还有一堆事没干
感觉开始滚雪球了啊
希望继续坚持

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值