【BUUCTF】暗号問題解決

MD5

トピック: e00cf25ad42683b3df678c61f42c6bda
テスト ポイント: MD5 暗号化

  1. タイトルは md5 暗号化情報を提供します。MD5 復号化
    Web サイトを直接復号化できます: md5 オンライン復号化クラッキング、md5 復号化暗号化 (cmd5.com)
    ここに画像の説明を挿入
    フラグ{admin1}

一目で解読

ZmxhZ3tUSEVfRkxBR19PRl9USElTX1NUUklOR30= 注: 取得したフラグに flag{} を含めて送信してください テスト
ポイント: base64 復号化

最後に「=」記号があり、一見base64のように見えますが、デコードするだけです。
Web サイトの復号化: CTF オンライン ツール - オンライン ベース エンコーディング

ここに画像の説明を挿入

URL エンコーディング

トピック: %66%6c%61%67%7b%61%6e%64%20%31%3d%31%7d テスト
ポイント: URL エンコーディング

タイトルは URL エンコーディングです。%number%number で特徴付けられます。URL デコードを使用してください
CTF オンライン ツール - オンライン URL エンコード|URL デコード (hiencode.com)
画像-20220726113734887

回し蹴りを見て

トピック: synt{5pq1004q-86n5-46q8-o720-oro5on0417r1}
テスト センター: モールス信号

****{ } の構造を見ると、flag{ } のはずの Caesar 暗号であることが容易に想像できます。sfから押すので、変位も13です。
CTF オンライン ツール - オンライン Caesar Cipher 暗号化|オンライン Caesar Cipher 復号化|Caesar Cipher Algorithm|Caesar Cipher (hiencode.com)

画像-20220726114044263

ムース

トピック: … 。-… - …- 。 -。 - - …-

モールス符号の特徴はドットと横線の組み合わせで、モールス符号を直接解読できるCTFオンラインツール - オンラインモールス符号エンコーディング|オンラインモールス符号デコーディング|モールス符号アルゴリズム|モールス (hiencode.com)
解読してみる iloveyouですが、それは間違っています。flag{ } を追加することはまだ間違っています。
注: モールス符号には大文字しかありません。大文字に変更する必要があります。

パスワード

トピック:

名前:チャン・サン
生年月日:19900315
キーのフォーマットはkey{xxxxxxxxxx}

誕生日は8桁、名前は2桁、答えは10桁です.zs19900315だと簡単に推測できます.

ミュータントシーザー

暗号化された暗号文: afZ_r9VYfScOeO_UL^RWUc
形式: flag{ }
テスト ポイント: Caesar 暗号の亜種

Caesar 暗号表は置換暗号です。暗号化と復号化は、文字を特定の桁数だけ移動することによって実現されます。平文のすべての文字は、アルファベットの固定数だけ後方 (または前方) にシフトされてから、暗号文に置き換えられます。

  1. 暗号文にはアンダースコアやアラビア数字が含まれていることから、使用されているアルファベットの置換暗号ではなく、ASCIIコード表が使用されている可能性が高いと推測されます。形式が であることがタイトルからわかるflag{ }ので、flagafZ_の対応から法則がわかります。

画像-202207261151051252. 各文字のオフセットであることがわかります。最初の文字からのオフセットは 5、2 番目の文字からのオフセットは 6、... n 番目の文字のオフセットは 4+n です。オフセットは順次インクリメントされます。解読するスクリプトを書きましょう。

public class Q123 {
    
    

     public static void main(String[] args) {
    
    
         String ciphertext = "afZ_r9VYfScOeO_UL^RWUc";
         char[] plaintext = new char[ciphertext.length()];
         for(int i = 0; i < ciphertext.length(); i++){
    
     //注意i是从0开始的,所以是5+i
             plaintext[i] = (char)(((int)ciphertext.charAt(i) + 5 + i) % 128);
         }
         for (char i: plaintext) {
    
    
             System.out.print(i);
         }
     }
}

フラグを取得{Caesar_variation}

引用印刷可能

トピック: =E9=82=A3=E4=BD=A0=E4=B9=9F=E5=BE=88=E6=A3=92=E5=93=A6 テストセンター: Quoted-printable
encryption

Quoted-printable 暗号化、解決策はフラグ {それならあなたも素晴らしい}
CTF オンライン ツール - オンライン Quoted-printable エンコーディング

うさぎ

トピック: U2FsdGVkX1/+ydnDPowGbjjJXhZxm2MP2AgI
テスト ポイント: ウサギの暗号化

Rabbit 暗号とは Rabbit は、2003 年に FSE セミナーで最初に提案された高速ストリーム暗号です。Rabbit は、128 ビットのキーと 64 ビットの初期化ベクトルを使用します。暗号化アルゴリズムのコア コンポーネントは、反復ごとに 128 メッセージ ビットを暗号化するビット ストリーム ジェネレーターです。
ここに画像の説明を挿入

オンライン Rabbit 暗号化 | Rabbit 復号化 - オンライン ツール (sojson.com)

フェンスの影

星も星も月も月も山も山も梁も梁もローラーもローラーも円筒も円筒も父も父も母もおかあさん、ごま油ランプはまだ少しきしむ 明るい oh oh 注: 得られた旗に旗{}を包んで提出してください

トピック: felhaagv{ewtehtehfilnakgw}
テスト サイト: フェンスのパスワード

簡単に言えば、フェンスパスワードは、平文 (スペースを削除) を n 個のグループ (各グループは m 個) に分割し、特定のソート方法を使用してこれらの文字を再結合することです。m のサイズは m 列フェンス パスワードと呼ばれ、より一般的な m は 2、つまり 2 列フェンス パスワードです。

これはフェンスのパスワードです。解読して取得します: flag{wethinkwehavetheflag}
フェンスのパスワードを解読します

RSA

注: 取得したフラグは、noxCTF を flag に置き換えて、flag{} の形式で提出してください。

トピック: RSA 鍵ペア生成で、p=473398607161、q=4511491、e=17 として、d を解いて flga として提出 テスト
ポイント: RSA 暗号化

RSAを直接解決するだけ、
RSAオンライン暗号化/オンライン復号化

アリスとボブ

暗号の歴史には、アリスとボブという 2 人の著名な人物がいます。彼らの愛は、順列とラウンド暗号化の後、混乱しにくく、本人確認がなくても、最終的な結果を知ることができます. 数学の王国の素数のように、彼らは孤独で情熱的です。次は大きな整数です: 98554799767、2 つの素数に分解してください。分解後、小さい方を前に、大きい方を後ろに置き、新しい数を合成し、md5 32 ビット小文字ハッシュを実行して、答え。注: 取得したフラグで flag{} をラップして送信してください
テスト ポイント: 多数分解
1. 素数分解
オンライン 素数分解
98554799767 は 101999 966233 に分解されます
2. 小さいものを前に、大きいものを後ろに置きます、新しい数値を合成し、md5 を実行します
MD5
d450209323a847c8d01c6be47c81811aの32 ビット小文字ハッシュは、
フラグ {d450209323a847c8d01c6be47c81811a} を取得します

MD5がありません

テスト サイト: md5

import hashlib   
for i in range(32,127):
    for j in range(32,127):
        for k in range(32,127):
            m=hashlib.md5()
            m.update(('TASC'+chr(i)+'O3RJMV'+chr(j)+'WDJKX'+chr(k)+'ZM').encode("utf8"))
            des=m.hexdigest()
            if 'e9032' in des and 'da' in des and '911513' in des:
                print(des);

タイトルはプログラムを示しています。変更して実行するだけで済み、自分で実行してみます。
e9032994dabac08080091151380478a2 を取得

RSA

数学かっこいい!RSA アルゴリズムを使用してシークレット メッセージをデコードします。c、p、q、および e は、RSA アルゴリズムのパラメーターです。

p = 9648423029010515676590551740010426534945737639235739800643989352039852507298491399561035009163427050370107570733633350911691280297777160200625281665378483
q = 11874843837980297032092405848653656852760910154543380907650040190704283358909208578251063047732443992230647903887510065547947313543299303261986053486569407
e = 65537
c = 83208298995174604174773590298203639360540024871256126892889661345742403314929861939100492666605647316646576486526217457006376842280869728581726746401583705899941768214138742259689334840735633553053887641847651173776251820293087212885670180367406807406765923638973161375817392737747832762751690104423869019034

RSA を使用して秘密のメッセージを見つける

n と e がわかれば、d を求めて計算し、フラグを取得する必要があります.
RSA の詳細な分析と戦略を知りたい場合は、BUUCTF RSA (1)を参照してください。

結果: 47bf28da384590448e0b0d23909a25a4

エンペラーズ コード ウェポン

紀元前100年、世界に大きな影響を与えた人物がローマに生まれ、彼は生涯ローマの三巨人の一人でした。彼は、彼にちなんで名付けられた単純な暗号の使用を開拓しました。
次の暗号文を解読して、意味のある単語を取得できます: FRPHEVGL
この同じ暗号化ベクトルを使用して、添付ファイルの暗号文を暗号化し、回答として送信できます。

暗号文 ComeChina
テスト サイト: Caesar Encryption

Kaiser オンライン復号化ツールを使用して、それらを順番にシフトします. 1 つずつ試すことも、Python スクリプトを記述して自分で実行することもできます.

str1 = 'FRPHEVGL'
str2 = str1.lower()                                 #转换为小写方便识别
num = 1                                             #偏移量
for i in range(26):
    print("{:<2d}".format(num),end = ' ')
    for temp in str2:
        if(ord(temp)+num > ord('z')):               #如果超出'z',需要重新映射会a~z这26个字母上
            print(chr(ord(temp)+num-26),end = '')
        else:
            print(chr(ord(temp)+num),end = '')
    num += 1
    print('')

ここに画像の説明を挿入
このことから、オフセットが 13 であることがわかっているので、暗号文 ComeChina で 13 ビットの Caesar 復号化を実行する必要があります。
flag{PbzrPuvan}

Windows システム パスワード

  1. 16 進エディタを使用してファイル .hash を開きます。次の内容を見つけることができます。画像-20220726142625300

  2. ファイルのサフィックスは hash であるため、MD5 を使用して各文字列をデコードし、MD5 オンライン復号化に取り込むことを考えました。フラグを取得するために試してみることができます
    画像-20220726142639382
    {good-luck}

情報化時代のペース

中国は情報化時代に早く入ることができたかもしれませんが、清政府によって拒否されました。添付されているのは、偉人が数十年後に言ったことの暗号文です。プレーン テキストを翻訳してください (答えは中国語の文字列です!) 注: 取得したフラグで flag{} をラップして送信してください

606046152623600817831216121621196386
テスト サイト: 電報暗号化

タイトルコンテンツの暗号文は、実は数字だけで構成されており、調べてみると中国語の暗号です。漢字コード表は、アラビア数字の4桁をコードとして使用し、0001から9999までの4桁の順序で並べられ、4桁を使用して最大10,000の漢字、文字、および記号を表します。漢字は、最初に部首によって配置され、次にストロークによって配置されます。文字と記号はコード表の最後に配置されます。その後、10,000 字では戸籍管理の要件を満たせなくなったため、2 番目の字義漢字が登場しました。香港では両方の文字が同じコードを使用し、入力スタッフが手動で文字を選択しますが、台湾では 2 文字目の漢字に先頭に「1」を追加して 5 桁のコードになります。次に、中国語コードのオンライン解読ツールをチェックして、この一連の中国語コードを解読すれば問題ありません。
ここに画像の説明を挿入
flag{コンピュータは人形から起動する必要があります}

シーザー?交換?へへ!

トピック: MTHJ{CUBCGXGUGXWREXIPOYAOEYFIGXWRXCHTKHFCOHCFDUCGTXZOHIXOEOWMEHZO}
テスト ポイント: Caesar 暗号 + 置換暗号の組み合わせ

最初に Caesar 暗号を使用します. 最初の 4 文字は目的の FLAG の代わりに FMAC を取得します. FMAC の 4 文字の間に従うべき規則はないので、タイトルに記載されている置換を試してください.画像-20220726143553924

quipqiup - cryptoquip および暗号ソルバーのオンライン復号化 Web サイトである quipqiup は、Edwin Olson の高速で自動化された暗号ソルバーです。新聞で一般的な単純な置換暗号を解決します
画像-20220726143743333

この質問はCaesar +単純な置き換えです

かわいいバジェ

かわいいバジエは豚の村の村長で、昔から豚の村には不思議なコードがありました。添付ファイルからコードを見つけて、可愛い朱八卦が言いたいことを確認してください。注: 取得したフラグに flag{} を含めて送信してください。テスト サイト:
Pigsty パスワード

写真の下に一連の記号があります

画像-20220726144746539

調査後、これは典型的な豚の暗号であり、それに応じて解決できます

伝統的な知識 + 古典的なコード

1. 甲子 2.乙丑 3.丙寅 4.丁卯 5.戊辰 6.己巳 7.庚午 8.辛未 9.壬申 10.癸酉
11.甲戌 12.乙亥 13.丙子 14.丁丑 15.戊寅 16.己卯 17.庚辰 18.辛巳 19.壬午 20.癸未
21.甲申 22.乙酉 23.丙戌 24.丁亥 25.戊子 26.己丑 27.庚寅 28.辛卯 29.壬辰 30.癸巳
31.甲午 32.乙未 33.丙申 34.丁酉 35.戊戌 36.己亥 37.庚子 38.辛丑 39.壬寅 40.癸卯
41.甲辰 42.乙巳 43.丙午 44.丁未 45.戊申 46.己酉 47.庚戌 48.辛亥 49.壬子 50.癸丑
51.甲寅 52.乙卯 53.丙辰 54.丁巳 55.戊午 56.己未 57.庚申 58.辛酉 59.壬戌 60.癸亥

質問で与えられた組み合わせの数値コードを書きます

28 30 23 8 17 10 16 30

加子を追加 (60)

88 90 93 68 77 70 76 90

ASCII 文字に変換: XZSDMFLZ

それから、伝統的な知識に加えて、古典的な暗号化方法もあるという話題がありました。他のキーを使用しないこの種の古典的な暗号化については、パリセーズとシーザーを思い浮かべるのは簡単です。でも柵は順番が変わるだけで、中の文字は変わりません。その中の文字は単語のように感じられないので、Caesar を使用して解読し、最終的に単語のような答え SUNYHAGU を見つけました。

RSA1

RSAを理解する問題解決の参考文献:BUUCTF RSA (1) Routing ( ) 学生のブログ - CSDN blog_buuctf rsa
画像-20220726151424940

RSAアルゴリズムに関与

画像-20220726151447584

p = 8637633767257008567099653486541091171320491509433615447539162437911244175885667806398411790524083553445158113502227745206205327690939504032994699902053229 q = 12640674973996472769176047937170883420927050821480010581593137135372473880595613737337630629752577346147039284030082593490776630572584959954205336880228469 dp = 6500795702216834621109042351193261530650043841056252930930949663358625016881832840728066026150264693076109354874099841380454881716097778307268116910582929 dq = 783472263673553449019532580386470672380574033551303889137911760438881683674556098098256795673512201963002175438762767516968043599582527539160811120550041 c =24722305403887382073567316467649080662631552905960229399079107995602154418176056335800638887527614164073530437657085079676157350205351945222989351316076486573599576041978339872265925062764318536089007310270278526159678937431903862892400747915525118983959970607934142974736675784325993445942031372107342103852

import gmpy2
I = gmpy2.invert(q,p)
mp = pow(c,dp,p)
mq = pow(c,dq,q)               #求幂取模运算
m = (((mp-mq)*I)%p)*q+mq       #求明文公式
print(hex(m))          #转为十六进制
print(bytes.fromhex(hex(m)[2:]))       #16进制转文本

答えを得る

0x6e6f784354467b57333163306d335f37305f4368316e343730776e7d b'noxCTF{W31c0m3_70_Ch1n470wn}'

許可取得の第一歩

これが何だと思いますか、クラックした後は忘れずにパスワードを教えてください。その答えは型破りな形である。注: 取得したフラグは flag{} で送信する必要があります

管理者:500:806EDC27AA52E314AAD3B435B51404EE:F4AD50F57683D4260DFD48AA351A17A8:::

このパスワードの形式は一見 MD5 暗号化ですが、F4AD50F57683D4260DFD48AA351A17A8 のみを復号化します。

画像-20220726153224072

昔ながらの

Os drnuzearyuwn, y jtkjzoztzoes douwlr oj y ilzwex eq lsdexosa kn pwodw tsozj eq ufyoszlbz irl rlufydlx pozv douwlrzlbz, ydderkhosa ze y rlatfyr jnjzli; mjy gfbmw vla xy wbfnsy symmyew (mjy vrwm qrvvrf)、hlbew rd symmyew、mebhsymw rd symmyew、vbomgeyw rd mjy lxrzy、lfk wr dremj。Mjy eiqybzye qiqbhjyev mjy myom xa hyedrevbfn lf bfzyewy wgxwmbmgmbrf. Wr mjy dsln bw f1_2jyf-k3_jg1-vb-vl_l

この質問の単語の長さは、シーザー、フェンス、および単純な置換を考慮すると、パッチワークです。quipqiup - cryptoquip および暗号ソルバーで n1_2hen-d3_hu1-mi-ma_a というフラグを取得しようとしてい
ます

何も難しいことはありません

以下は、とある国の現大統領の命令で、変な暗号化がされており、ルールはなく、解析するしかないようです。この文章を流暢な文章に直して、そこからキーを見つけて回答として提出してください. 回答は小文字を含めて32桁です. 注: 取得したフラグは flag{} で送信する必要があります

打开附件是一串字符
VIZZB IFIUOJBWO NVXAP OBC XZZ UKHVN IFIUOJBWO HB XVIXW XAW VXFI X QIXN VBD KQ IFIUOJBWO WBKAH NBWXO VBD XJBCN NKG QLKEIU DI XUI VIUI DKNV QNCWIANQ XN DXPIMKIZW VKHV QEVBBZ KA XUZKAHNBA FKUHKAKX XAW DI VXFI HBN QNCWIANQ NCAKAH KA MUBG XZZ XEUBQQ XGIUKEX MUBG PKAWIUHXUNIA NVUBCHV 12NV HUXWI XAW DI XUI SCQN QB HZXW NVXN XZZ EBCZW SBKA CQ NBWXO XAW DI DXAN NB NVXAP DXPIMKIZW MBU JIKAH QCEV XA BCNQNXAWKAH VBQN HKFI OBCUQIZFIQ X JKH UBCAW BM XLLZXCQI XAW NVI PIO KQ 640I11012805M211J0XJ24MM02X1IW09

言葉はパッチワーク、単純な置き換えを考える

画像-20220726154344571

Get: THE KEY IS 640E11012805F211B0AB24FF02A1ED09、キーが 640E11012805F211B0AB24FF02A1ED09 であることがわかり、タイトル プロンプトが小文字であるため、大文字を変換して get: 640e11012805f211b0ab24ff02a1ed09

RSA3

ファイルを開き、次を見つけます。

c1=
n=
e1=11187289
c2=
e2=9647291

共通モード攻撃前提: 2 つ以上の RSA 暗号化プロセスがあり、m と n が 2 回同じ場合、m の値は d を計算せずに直接計算できます。

RSAを理解する問題解決の参考文献:BUUCTF RSA (1) Routing ( ) 学生のブログ - CSDN blog_buuctf rsa

#共模攻击
import libnum
e1 = 11187289
c1=22322035275663237041646893770451933509324701913484303338076210603542612758956262869640822486470121149424485571361007421293675516338822195280313794991136048140918842471219840263536338886250492682739436410013436651161720725855484866690084788721349555662019879081501113222996123305533009325964377798892703161521852805956811219563883312896330156298621674684353919547558127920925706842808914762199011054955816534977675267395009575347820387073483928425066536361482774892370969520740304287456555508933372782327506569010772537497541764311429052216291198932092617792645253901478910801592878203564861118912045464959832566051361
e2 = 9647291
c2=18702010045187015556548691642394982835669262147230212731309938675226458555210425972429418449273410535387985931036711854265623905066805665751803269106880746769003478900791099590239513925449748814075904017471585572848473556490565450062664706449128415834787961947266259789785962922238701134079720414228414066193071495304612341052987455615930023536823801499269773357186087452747500840640419365011554421183037505653461286732740983702740822671148045619497667184586123657285604061875653909567822328914065337797733444640351518775487649819978262363617265797982843179630888729407238496650987720428708217115257989007867331698397
n=22708078815885011462462049064339185898712439277226831073457888403129378547350292420267016551819052430779004755846649044001024141485283286483130702616057274698473611149508798869706347501931583117632710700787228016480127677393649929530416598686027354216422565934459015161927613607902831542857977859612596282353679327773303727004407262197231586324599181983572622404590354084541788062262164510140605868122410388090174420147752408554129789760902300898046273909007852818474030770699647647363015102118956737673941354217692696044969695308506436573142565573487583507037356944848039864382339216266670673567488871508925311154801

def ext_euclid(a, b):     
 if b == 0:         
     return 1, 0, a     
 else:         
     x, y, q = ext_euclid(b, a % b) # q = gcd(a, b) = gcd(b, a%b)         
     x, y = y, (x - (a // b) * y)         
     return x, y, q
r,s,q = ext_euclid(e1,e2)
m = (pow(c1,r,n)*pow(c2,s,n))%n
print(libnum.n2s(m))

回答フラグを取得{49d91077a1abcb14f1a9d546c80be9ef}

エンコード解除

89FQA9WMD<V1A<V1S83DY.#<W3$Q,2TM]

これは Uuencode エンコーディングです。Uuencodeエンコーディング (暗号化); Uuencode デコード (復号化) を直接変換します|テキスト暗号化および復号化ツール (qqxiuzi.cn)

フラグを取得 {dsdasdsa99877LLLKK}

RSA2

画像-20220726162400589

クラックを直接コーディング

import libnum e = 65537 n=248254007851526241177721526698901802985832766176221609612258877371620580060433101538328030305219918697643619814200930679612109885533801335348445023751670478437073055544724280684733298051599167660303645183146161497485358633681492129668802402065797789905550489547645118787266601929429724133167768465309665906113 dp=905074498052346904643025132879518330691925174573054004621877253318682675055421970943552016695528560364834446303196939207056642927148093290374440210503657 c=140423670976252696807533673586209400575664282100684119784203527124521188996403826597436883766041879067494280957410201958935737360380801845453829293997433414188838725751796261702622028587211560353362847191060306578510511380965162133472698713063592621028959167072781482562673683090590521214218071160287665180751 pd = e*dp-1

def ext_euclid(a, b):       if b == 0:         
     return 1, 0, a       else:         
     x, y, q = ext_euclid(b, a % b)       
     x, y = y, (x - (a // b) * y)         
     return x, y, q

def mod_inv(a, b):  return ext_euclid(a, b)[0] % b   #函数返回的第一个数%b

for i in range(1,e):  if pd%i == 0:
     if n%(pd//i+1) == 0:     
         p = pd//i+1
         q = n//p
         fn = (p-1)*(q-1)
         d = mod_inv(e,fn)
         m = pow(c,d,n)
         print(libnum.n2s(m))

フラグを取得{wow_leaking_dp_breaks_rsa?_98924743502}

[AFCTF2018]モールス

-…/.----/-…/-…/-…/…–/–…/…-/-…/-…/–…/-…/…–/.----/–… /…–/…—/–…/–…/…-/…/…-./–…/…–/…–/-----/…/…-./…–/…–/… –/…-/…–/…/–…/----./–…/-…

この質問ではまずモールス符号が思い浮かびますが、モールス信号には/がないので、/をスペースに置き換えて、

61666374667b317327745f73305f333435797d

もう一度解読すると、7d の ASCII コードは '}' であることがわかりました。
*#afctf{1s't_s0_345y}* を取得

反対は引き付ける

最近、性別が違うのにどうやって恋に落ちるの?この見方が間違っていることを証明するために、異性が引き寄せられることを証明してください。注: 取得したフラグは flag{} で送信する必要があります

圧縮パッケージを開いて 2 つの txt ファイルを取得し、010editor で開きます。Python スクリプトを XOR 2 進数に記述します。XOR プロセスは、Python スクリプトで実装できます。得られた結果は

画像-20220726170646019

010editor を開き、新しい Hex ファイルを作成し、バイナリ データとして貼り付けます。フラグを取得{ea1bc0988992276b7f95b54a7435e89e}

修復マスター

「TASC?O3RJMV?WDJKX?ZM」という謎の文字列、クエスチョンマークの部分が大文字の未知の文字列であるこの謎の文字列を特定するために、この文字列の 32 ビット MD5 コードを別の手段で取得しました。しかし、我々が入手した 32 ビット MD5 コードも不完全です。答えとして。注: 取得したフラグは flag{} で送信する必要があります

この質問は主にギャップに関するものですが、3 つ目の理由はループを使用して検証できます。

 import hashlib import string

def md5(str):  m = hashlib.md5()  m.update(str.encode("utf8"))  return m.hexdigest()

for i in string.ascii_uppercase:  for j in string.ascii_uppercase:
     for k in string.ascii_uppercase:
         c = 'TASC' + i + 'O3RJMV' + j + 'WDJKX' + k + 'ZM'
         x = md5(c).upper()
         if 'E903' in x and '4DAB' in x and '08' in x and '51' in x and '80' in x and '8A' in x:
             print(c)
             print(x)
             break
          

最後に結果フラグを取得します: E9032994DABAC08080091151380478A2

RSA

RSA関連の問題解解 参考:BUUCTF RSA (1) Routing ( ) 学生のブログ - CSDN blog_buuctf rsa
証明書 公開鍵解析
RSA公開鍵ファイルの復号化暗号文の原理解析

まずは2つのファイルを入手し、pub.keyファイルの中身を公開鍵
SSLオンラインツールで解析 - オンライン公開鍵解析 - オンライン公開鍵抽出 - 公開鍵オンラインクラッキング - SSLeye公式サイト

画像-20220727075928332

e と n を取得し、n を分解して p、q を見つけ、yafu ツールまたは web サイトの factordb を使用します

コード:

import rsa
import gmpy2
c = 1854183526100811878807183372982532818560316522978821358738967769534081571682
p = 285960468890451637935629440372639283459
q = 304008741604601924494328155975272418463
e = 65537
n = 86934482296048119190666062003494800588905656017203025617216654058378322103517
fn = (p-1)*(q-1)

d = int(gmpy2.invert(e,fn))
key = rsa.PrivateKey(n,e,d,q,p)
with open(r'c:\111\flag.enc','rb') as f:    #文件路径
    f = f.read()
    print(rsa.decrypt(f,key))

画像-20220727075956090

取得: フラグ{decrypt_256}

サロール

RSAを理解する問題解決の参考文献:BUUCTF RSA (1) Routing ( ) 学生のブログ - CSDN blog_buuctf rsa

mport libnum,gmpy2

e = 19
n = 920139713
p = 18443
q = 49891
d = int(gmpy2.invert(e,(p-1)*(q-1)))

f = open(r'c:\111\data.txt','rb')
next(f)     #跳过文件中的第一行    
next(f)     #跳过文件中的第二行
for i in f: #行读取
    m = pow(int(i),d,n)
    print(libnum.n2s(m).decode(),end = '')   #libnum解出的是bytes类型,转换成字符串类型用.decode('utf-8')

おすすめ

転載: blog.csdn.net/xuanyulevel6/article/details/126071401