查看: 166|回复: 0

[Crypto] GKCTF_2020_crypto_babycrypto 99

[复制链接]
发表于 2020-5-28 10:39:48 | 显示全部楼层 |阅读模式
babycrypto
这道题拿到题目可知是RSA,大数n使用工具暂时无法进行分解,而p给出了高位,低位还未知。
在网上找到了类似的题目,原文链接

GKCTF_2020_crypto_babycrypto 99

GKCTF_2020_crypto_babycrypto 99

这里使用到一个开源的数学软件sagemath

GKCTF_2020_crypto_babycrypto 99

GKCTF_2020_crypto_babycrypto 99

得到了p,于是接下来常规的RSA求解
import gmpy2
import math
from Crypto.Util.number import bytes_to_long, long_to_bytes

c = gmpy2.mpz(1422566584480199878714663051468143513667934216213366733442059106529451931078271460363335887054199577950679102659270179475911101747625120544429262334214483688332111552004535828182425152965223599160129610990036911146029170033592055768983427904835395850414634659565092191460875900237711597421272312032796440948509724492027247376113218678183443222364531669985128032971256792532015051829041230203814090194611041172775368357197854451201260927117792277559690205342515437625417792867692280849139537687763919269337822899746924269847694138899165820004160319118749298031065800530869562704671435709578921901495688124042302500361)
n = gmpy2.mpz(22356763374676421464625378500213339933332772809897207920729779273423674391734609826525432054721219700275907299132471518921609327317193522567659631757746842030241874692914098354564311806192080734895649520789778880115460999713973202684541940857690744940359412410680906226760273075221532248260114209496048785258860756023841150910290983974843412361701517438220974722832625030127395031631696995777436058406987465592189873785392136925593708921923255186282515777996509326779993612528103615281644689464568237409082282767318227236298791238683706176542426759149262625349498709445342710799386836175120162674849965878446213480453)
p = gmpy2.mpz(160734387026849747944319274262095716650717626398118440194223452208652532694713113062084219512359968722796763029072117463281356654614167941930993838521563406258263299846297499190884495560744873319814150988520868951045961906000066805136724505347218275230562125457122462589771119429631727404626489634314291445667)
q = n/p
e = 65537
d = gmpy2.invert(e, (p-1)*(q-1))
m = pow(c,d,n)
flag = long_to_bytes(m)

print flag


温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的最好奖励,还可以获得学币奖励,请尊重作者的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
论坛交流群:672619046
微信公众号
快速回复 返回顶部 返回列表