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