vul_rsa_02
以下の文字列が与えられた。
This string was given:
c: 227982950403746746755552239763357058548502617805036635512868420433061892121830106966643649614593055827188324989309580260616202575703840597661315505385258421941843741681
n: 314346410651148884346780415550080886403387714336281086088147022485674797846237037974025946383115524274834695323732173639559408484919557273975110018517586435379414584423
e: 66936921908603214280018123951718024245768729741801173248810116559480507532472797061229726239246069153844944427944092809221289396952390359710880636835981794334459051137
Referring to:
RSA暗号運用でやってはいけない n のこと #ssmjp
を参考にすると、スライド14「eの値が大きすぎてはいけない」に該当しそうであった。
そこで、Wiener's Attack について調べると、以下のページが見つかった。
I found the 14th slide "don't use too large e" should apply.
I did some research about Wiener's Attack and found this page:
Wiener’s Attack を実装した - HackMD
ここで紹介されていた owiener.py の最後に以下を追加し、実行した。
I added this code after owiener.py, which was introduced in the page, and executed.
e = 66936921908603214280018123951718024245768729741801173248810116559480507532472797061229726239246069153844944427944092809221289396952390359710880636835981794334459051137
n = 314346410651148884346780415550080886403387714336281086088147022485674797846237037974025946383115524274834695323732173639559408484919557273975110018517586435379414584423
print(attack(e, n))
以下の出力が得られた。
The output was:
19780253153570454414022314122363673676673
この値をd
とし、Pythonで以下の値を出力させた。
Using this value as d
, I had it print the value of this via Python:
hex(pow(c, d, n))[2:]
以下の結果が得られた。
The result was:
26d79a6fba2741958ce82462855a96ec4dc1623133cfc341579920befc02eb7b9e0a3bbb87200666c61677b3139375f4d69636861656c5f4a5f5769656e65725f3637337d
最初に0
を補い、CyberChef で From Hex を適用すると、flagが得られた。
I obtained the flag by applying "From Hex" in CyberChef after adding 0
to the head.
flag{197_Michael_J_Wiener_673}
setodaNote CTF