下载压缩包,得到rsa.zip,解压,发现有密码,使用弱口令爆破,密码是password
发现里面有
xuenixiang_2018_crypto_rsass
根据做了那么多rsa的经验来说,两个公钥第一反应是共模攻击. 先使用openssl取出两个pubkey的n和e,(也可以使用在线工具取出n和e)http://ctf.ssleye.com/pub_asys.html n1=1736252012414973605929160571783981408943126183397240817576650489 4876091272021197374480215582589878198406028065354454242540322618 6146701603177016984077295157818115301808853342658513644903578849 0933608541077516895394212035921503892502530536348053868548798882 7339463890539279008285241711326041868183805848503077373967082910 9324227981652424811545937947126392511578561020096308948450499843 4677665933938088676680481495977804844099693782013856080207737588 5700500737699904011032451007341777160586467318264288370080315519 3058002476826118027749969993308125347238069254260525471283711806 83265963525581842037399869323246530085399 e1=2333 n2=1736252012414973605929160571783981408943126183397240817576650489 4876091272021197374480215582589878198406028065354454242540322618 6146701603177016984077295157818115301808853342658513644903578849 0933608541077516895394212035921503892502530536348053868548798882 7339463890539279008285241711326041868183805848503077373967082910 9324227981652424811545937947126392511578561020096308948450499843 4677665933938088676680481495977804844099693782013856080207737588 5700500737699904011032451007341777160586467318264288370080315519 3058002476826118027749969993308125347238069254260525471283711806 83265963525581842037399869323246530085399 e2=23333 提取后发现两个公钥的n都是一样的,只有e不一样,就更加确定是共模攻击了. 接下来就是取出密文. 打开密文发现是这样的。
xuenixiang_2018_crypto_rsass
需要先将其base64解码,再转为10进制,才能得到密文m,可使用在线工具是解不开这个base64的。
这里我们使用Python.
先base64解码(这里如果不放到变量里面下一步会报错.):
xuenixiang_2018_crypto_rsass
导入一个libnum库,将hex转为dec:
xuenixiang_2018_crypto_rsass
得到了两个密文: M1 = 11757177168629974661319129065020939259607843855964612407515015619551332717303594939284265148421101106538576564879770344246694669035164564635188309876801896156214909946098869029964618647606449218025915092461416329529723153695631060387903820322776063152970417682658882514448192870115306139048632667164375339647480060498038060662339943872320998391726896418231367745182167642401094985859083528539732718585607300300744481583877075988159078923393794888199752412273065186387778708588318818871255432956112609603017152148063465689319082652284861285738454428311471661017770501362483439955249552527930663707069794266908382237863
M2 = 2364848878397323871885597084235162950454738150033561990125608234733186785294327511676322556989693319543787881108157790541032502889824032246849038028277601291878651138223131738210948288040172974610279550123399373111991951111719314902078119305973622147396199257818150347936553495169543808071509800280778646769553776723985138633331947024508645378935223338224527962766707863670722941767067705851822587652625805245801727869961524972624327839027498877534264770109063202217409037083612774983213841234965045214820133529399280883524064963136158251681946077429913578531311243649928666453318570284124743168193304356485791847813
完整的取出m的代码:
xuenixiang_2018_crypto_rsass
现在已经得到了n, e1, e2, m1, m2 可以开始写共模攻击脚本了。(脚本已打包,gm.py )
xuenixiang_2018_crypto_rsass
得到了: 56006392793405146392044030904223674296981372972935018576761589590002462312910860136112925465677030781
先将这个十进制数字转为hex:
xuenixiang_2018_crypto_rsass
得到: 666c61677b34623062346338612d383266332d346438302d393032622d3865376135373036663866657d
再将其转为字符:
xuenixiang_2018_crypto_rsass
得到flag: flag{4b0b4c8a-82f3-4d80-902b-8e7a5706f8fe}
平台不让用 - , 就更改一下flag格式(删除-).
xuenixiang_2018_crypto_rsass
得到最终的flag: flag{4b0b4c8a82f34d80902b8e7a5706f8fe}
|