NSSCTF_crypto_[广东强网杯 2021 团队组]RSA and BASE?

NSSCTF_crypto_[广东强网杯 2021 团队组]RSA and BASE?

提示:base64    素数分解

题目:

RSA:
n=56661243519426563299920058134092862370737397949947210394843021856477420959615132553610830104961645574615005956183703191006421508461009698780382360943562001485153455401650697532951591191737164547520951628336941289873198979641173541232117518791706826699650307105202062429672725308809988269372149027026719779368169
e=36269788044703267426177340992826172140174404390577736281478891381612294207666891529019937732720246602062358244751177942289155662197410594434293004130952671354973700999803850153697545606312859272554835232089533366743867361181786472126124169787094837977468259794816050397735724313560434944684790818009385459207329
c=137954301101369152742229874240507191901061563449586247819350394387527789763579249250710679911626270895090455502283455665178389917777053863730286065809459077858674885530015624798882224173066151402222862023045940035652321621761390317038440821354117827990307003831352154618952447402389360183594248381165728338233
BASE:
"GHI45FQRSCX****UVWJK67DELMNOPAB3"

ok拿到这题你应该去干什么?嗯?你应该干什么?

回答我!look in my eyes!tell me why baby!why baby !why?

先去factor看看n能不能分解

ok成功分解出来了那就很简单了直接开始写脚本

#导入我们需要的库
from Crypto.Util.number import long_to_bytes
import gmpy2

#已知
n=56661243519426563299920058134092862370737397949947210394843021856477420959615132553610830104961645574615005956183703191006421508461009698780382360943562001485153455401650697532951591191737164547520951628336941289873198979641173541232117518791706826699650307105202062429672725308809988269372149027026719779368169
e=36269788044703267426177340992826172140174404390577736281478891381612294207666891529019937732720246602062358244751177942289155662197410594434293004130952671354973700999803850153697545606312859272554835232089533366743867361181786472126124169787094837977468259794816050397735724313560434944684790818009385459207329
c=137954301101369152742229874240507191901061563449586247819350394387527789763579249250710679911626270895090455502283455665178389917777053863730286065809459077858674885530015624798882224173066151402222862023045940035652321621761390317038440821354117827990307003831352154618952447402389360183594248381165728338233
BASE ="GHI45FQRSCX****UVWJK67DELMNOPAB3"

#因式分解出p.q
p = 127059276863396320706295330136200886609600493401056775186365515611547962912096366560863480830412003882577863014816249680438671577507675892180828563868163627
q = 445943381059409537717658916522990906261609738909680208927145849237389096915733551127729182559244164126263654638010224865124975773193229727063534492604345147

#计算phi_n
phi_n = (p - 1)*(q - 1)

#计算私钥d
d = gmpy2.invert(e,phi_n)

#计算密文m
m = long_to_bytes(pow(c,d,n)).decode()

#输出
print(m)

运行后flag为

flag{TCMDIEOH2MJFBLKHT2J7BLYZ2WUE5NYR2HNG====}                                                     

.....................

........................

...............................

...................................

..........................................

.................................................

我们是不是忘了点什么?

没错那段base代码还没用上

from itertools import permutations
import base64

str_list = ['T', 'Y', 'Z', '2']
perms = permutations(str_list)
middle_part = []
for perm in perms:
    middle_part.append(''.join(perm))
for str_part in middle_part:
    flag = 'TCMDIEOH2MJFBLKHT2J7BLYZ2WUE5NYR2HNG===='
    t = 'GHI45FQRSCX' + str_part + 'UVWJK67DELMNOPAB3='
    table = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567='
    table = str.maketrans(t, table)
    flag = base64.b32decode(flag.translate(table))
    print(flag)

运行后记得找flag

最后flag为

NSSCTF{rsa_and_base_all_right}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值