C/C++教程

[RoarCTF2019]RSA

本文主要是介绍[RoarCTF2019]RSA,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

[RoarCTF2019]RSA

下载附件加上txt后缀打开得到

A=(((y%x)**5)%(x%y))**2019+y**316+(y+1)/x
p=next_prime(z*x*y)
q=next_prime(z)
A =  2683349182678714524247469512793476009861014781004924905484127480308161377768192868061561886577048646432382128960881487463427414176114486885830693959404989743229103516924432512724195654425703453612710310587164417035878308390676612592848750287387318129424195208623440294647817367740878211949147526287091298307480502897462279102572556822231669438279317474828479089719046386411971105448723910594710418093977044179949800373224354729179833393219827789389078869290217569511230868967647963089430594258815146362187250855166897553056073744582946148472068334167445499314471518357535261186318756327890016183228412253724
n =  117930806043507374325982291823027285148807239117987369609583515353889814856088099671454394340816761242974462268435911765045576377767711593100416932019831889059333166946263184861287975722954992219766493089630810876984781113645362450398009234556085330943125568377741065242183073882558834603430862598066786475299918395341014877416901185392905676043795425126968745185649565106322336954427505104906770493155723995382318346714944184577894150229037758434597242564815299174950147754426950251419204917376517360505024549691723683358170823416757973059354784142601436519500811159036795034676360028928301979780528294114933347127
c =  41971850275428383625653350824107291609587853887037624239544762751558838294718672159979929266922528917912189124713273673948051464226519605803745171340724343705832198554680196798623263806617998072496026019940476324971696928551159371970207365741517064295956376809297272541800647747885170905737868568000101029143923792003486793278197051326716680212726111099439262589341050943913401067673851885114314709706016622157285023272496793595281054074260451116213815934843317894898883215362289599366101018081513215120728297131352439066930452281829446586562062242527329672575620261776042653626411730955819001674118193293313612128

将n分解得到p,q

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0N0aAzum-1626101040291)(C:\Users\86183\Desktop\ZERO\2ero\WP\BUUCTF\Crypto[RoarCTF2019]RSA\image-20210712171151719-1626081113975.png)]

p=
842868045681390934539739959201847552284980179958879667933078453950968566151662147267006293571765463137270594151138695778986165111380428806545593588078365331313084230014618714412959584843421586674162688321942889369912392031882620994944241987153078156389470370195514285850736541078623854327959382156753458569

q=
842868045681390934539739959201847552284980179958879667933078453950968566151662147267006293571765463137270594151138695778986165111380428806545593588078365331313084230014618714412959584843421586674162688321942889369912392031882620994944241987153078156389470370195514285850736541078623854327959382156753458569

这就直接解出p,q了???A是干啥用的???(菜鸡疑惑!!!)

尝试解密

import gmpy2

p=842868045681390934539739959201847552284980179958879667933078453950968566151662147267006293571765463137270594151138695778986165111380428806545593588078365331313084230014618714412959584843421586674162688321942889369912392031882620994944241987153078156389470370195514285850736541078623854327959382156753458569
q=139916095583110895133596833227506693679306709873174024876891023355860781981175916446323044732913066880786918629089023499311703408489151181886568535621008644997971982182426706592551291084007983387911006261442519635405457077292515085160744169867410973960652081452455371451222265819051559818441257438021073941183
c=41971850275428383625653350824107291609587853887037624239544762751558838294718672159979929266922528917912189124713273673948051464226519605803745171340724343705832198554680196798623263806617998072496026019940476324971696928551159371970207365741517064295956376809297272541800647747885170905737868568000101029143923792003486793278197051326716680212726111099439262589341050943913401067673851885114314709706016622157285023272496793595281054074260451116213815934843317894898883215362289599366101018081513215120728297131352439066930452281829446586562062242527329672575620261776042653626411730955819001674118193293313612128

e=0x10001
d=gmpy2.invert(e,(p-1)*(q-1))
import binascii
print(binascii.unhexlify(hex(gmpy2.powmod(c,d,p*q))[2:]))

运行得到

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aV2kWoTF-1626101040294)(C:\Users\86183\Desktop\ZERO\2ero\WP\BUUCTF\Crypto[RoarCTF2019]RSA\image-20210712171910517-1626081552311.png)]

RoarCTF{wm-l1l1ll1l1l1l111ll}

所以flag为

flag{wm-l1l1ll1l1l1l111ll}

看了大佬的wp才知道还有另一种解法

  1. 通过分析x,y的取值范围.
  2. 枚举x,y从而得到x,y的解
  3. 分析可得q与iroot(n/(x*y),2)的值相接近.从而可以得出p,q的值.

枚举x,y从而得到x,y的解
3. 分析可得q与iroot(n/(x*y),2)的值相接近.从而可以得出p,q的值.

这里就要用到题目给的A了,23333

这篇关于[RoarCTF2019]RSA的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!