1.ファイル解析
初めてこのトピックは、トピックを参照してくださいが、これは問題のRSA復号であることを知っています。
公開鍵のn = pとqは二つの大きな素数のp * qを、
eは、公開鍵として、ランダムに選択された数であります
Dは、条件式を満足するEに関連付けられた番号である:ED = 1(MOD PHI(N))
PHI(n)は、オイラー関数であり、PHI(N)=(P-1)(Q-1)
転送:https://blog.csdn.net/kevin66654/article/details/54087647
pub.keyは公開鍵であるので、長い間、我々は暗号化されたRSAの暗号化を解除するために、スクリプトファイルを使用して、その後N、E、P、Q、D、公開鍵ファイル、およびを解析されたとして、RSA暗号化されたファイルをflag.enc。
2.公共の過程
2.1公開鍵を取り出します
16進数の文字列を変換IDAオープンpub.keyは、公開鍵を抽出しました。
-----公開鍵をBEGIN ----- MDwwDQYJKoZIhvcNAQEBBQADKwAwKAIhAMAzLFxkrkcYL2wch21CM2kQVFpY9 + 7 + / AvKr1rzQczdAgMBAAE = ----- END PUBLIC KEY -----
2.2分析公開鍵(エキスE、N)
でhttp://tool.chacuo.net/cryptrsakeyparse公開鍵は解決されます
公開指数とモジュール情報:
キーの長さ: | 256 |
模数: | C0332C5C64AE47182F6C1C876D42336910545A58F7EEFEFC0BCAAF5AF341CCDD |
インデックス: | 65537(0x10001) |
にゲット
E = 65537
N = 86934482296048119190666062003494800588905656017203025617216654058378322103517(ADCの10進数)
2.3分析公開鍵(抽出P、Q)
ヤフーや使用http://www.factordb.com/index.php?query=86934482296048119190666062003494800588905656017203025617216654058378322103517を 、Q nはpを解析することにより、
P = 285960468890451637935629440372639283459
Q = 304008741604601924494328155975272418463
3.復号化スクリプト
インポートgmpy2 インポートRSA E = 65537 N = 86934482296048119190666062003494800588905656017203025617216654058378322103517 P = 285960468890451637935629440372639283459 Q = 304008741604601924494328155975272418463 PHIN =(Q-1)*(P-1 ) D = gmpy2.invert(E、PHIN) キー = rsa.PrivateKey(N、E、INT (D)、P、Q) (オープンと" C:\\ユーザー\\ 10245 \\デスクトップ\\出力\\ flag.enc "、" RB + " :Fなど) 、F = f.read() 印刷(rsa.decrypt(F、キー))
4.getフラグ!
フラグ{decrypt_256}
CTFのRSAについての詳細をお知りになりたい、あなたは見てとることができhttps://err0rzz.github.io/2017/11/14/CTF%E4%B8%ADRSA%E5%A5%97%E8%B7%AF/を