[CTF] BUUCTFCrypto 部分ソリューション (継続的に更新)

暗号1

修復師
ブッダは言いました:たったの4日

修復マスター

トピック

TASC?O3RJMV?WDJKX?ZM という謎の文字列を取得しました。疑問符部分は不明な大文字です。この謎の文字列を特定するために、この文字列の 32 ビット MD5 コードを別の方法で取得しました。しかし、私たちが入手した 32 ビット MD5 コードも不完全です、E903???4DAB???08???51?80???8A?。謎の文字列の元の外観を推測し、32 MD5 コードを答え。注: 取得したフラグに flag{} を含めて送信してください。

問題解決のアイデア

この質問は、謎の文字列の不明な疑問符の部分が大文字であることを示しています。各位置を可能な文字に置き換えて (合計 26 26 26の可能な結果)、MD5 暗号化値を計算し、MD5 暗号化値と比較できます。質問で与えられました。

問題解決スクリプト

import hashlib

s = "TASC?O3RJMV?WDJKX?ZM"
s_md5 = "E903???4DAB????08?????51?80??8A?"
for i in range(26):
    # 替换第一个?
    s1 = s.replace("?", chr(65 + i), 1)
    for j in range(26):
        # 替换第二个 ?
        s2 = s1.replace("?", chr(65 + j), 1)
        for k in range(26):
            # 替换第三个 ?
            s3 = s2.replace("?", chr(65 + k), 1)
            # 将替换后的字符串进行MD5加密
            c = hashlib.md5(s3.encode("utf-8")).hexdigest().upper()
            if c.startswith(s_md5[0:4]):
                 print("flag{" + c + "}")

演算結果

flag{
    
    E9032994DABAC08080091151380478A2}

注記:

 c = hashlib.md5(s3.encode("utf-8")).hexdigest().upper()
  • hashlib を使用して md5 値を計算する場合、まず文字列をバイト型に変換してから、その md5 値を計算する必要があります。
  • hexdigest 関数は、hashlib ライブラリの md5 関数のメソッドであり、md5 関数によって計算されたバイナリ データを 16 進文字列に変換するために使用されます。
    アイデアはボスのオリジナルリンクから来ています

【WUSTCTF2020】釈迦は言った「たった4日」

トピック

タイトル説明: 聖書は「旧約聖書」と「新約聖書」に分かれます。
タイトル: ズンは孤独、カルパを修め、ポ、a、a、a、a、a、a、a、a、 a、a、a、a、a、a、a、a、a、a、a、a、a、a. シー・ユアン・ポー モ・リー・スオ・ジャ・モ・フム・ジー サイ・ユアン・シュー・マントラ・ヂュアン・ボー・ハー ナン・ショウ・ジー僧侶 Ruo Ji Yi Ji Mito Xu Se Sha Luo Mantra Di Ruo Tuo Nan Hui Min Yi Luo Bo Ruo Jie Miss Duo Curse Sai Li Mibo Duo Zha Hui が Mi Zhu の素晴らしい真実のマントラを聞いて唱えた Tuo Luo Zha Lu Di Bo Li Zhi Po Di 嚩A Dou Xuan Luo Hung Se Bo Na Zhu Jie Po Po Zha Na Zhen Se Bo 嘚 Cha Dou A Po Ruo この言葉を聞くと、パンショウはすぐにルオ・シュアン・コン・トゥオ、ショウメイを思い出し、また、「沈黙の僧侶、ガセ、荘寿」と歌います。 、Humduo、尊い僧侶、歌う、Nanshou、Douwo、Kongsuo、Panaṣo、すべてのハム、すべての村、Lali、Panzhase. Kong Zha もつぶやき、色はdou Duo 彼はまた Kong Cha に愛着を持っています. Heshou カラーマントラ Doumo Bamadhi kalpa Zhutuo Jishou Suo Bo ZhaはHema Shou Xuan Zha Mi Ji Ji Mi La Jie Gabo Suo Mocha Shou Bo Shou Jie Xiu Heru Chi La Sa Se Cha Sa Shou Xiu Cha Yi ChaはShou Yi Ruo Xin Zhi Mi Yan Huiなどを聞いたヤン. 空の僧侶シュー・イー・ヤン・ラを聞くとき 私の願いは、私の心は長くなり、心は長くなり、私の心はマントラのようにつぶやき、私の人生は長くなり、私の人生は長くなります。
ヒント:

  1. 環境に優しくはありませんが、ヒントは一度入手すると使い捨てのようで、何の価値もありません。

  2. シーザーは最後のステップではありません。ところで、シーザーはなぜシーザーと呼ばれるのでしょうか?

問題解決のアイデア

質問ルーチンは少し奥深いので、質問について注意深く考える必要があります。

1. 仏陀の本当の意味を理解する

すべての質問は仏教に関するものです。仏教暗号を使用してください。
ブッダは暗号化を呼び出します

2. 社会主義的価値観の暗号化

得られた結果はすべて社会主義的価値観に関連した内容であり、ドゥ・ニアン氏に尋ねたところ、彼女は社会主義的核心的価値観を暗号化していました。
社会主義の核心的価値観の暗号化

3. フェンスの暗号化: doyouknowfence
を通じてフェンスのパスワードを復号化する必要があることを知ることができます。
フェンスのパスワード暗号化

4. Caesar 暗号化と Base32同様に、 doyoukonwCaesar が
表示されると、 Caesar cipher を復号化する必要があることがわかり、ヒントの助けを借りて、Caesar 暗号化が最後のステップではないことがわかります。前の文字列を観察してください。すべて大文字と 2 ~ 7 の数字、盲目的に推測してください Wave Base32問題解決スクリプト:

import base64


def caesarCrack(c, n):
    alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    c = c.upper()
    m = ""
    for i in c:
        index = alpha.find(i)
        if index != -1:
            index = (index + n) % 26
            m += alpha[index]
        else:
            m += i
    return m


if __name__ == '__main__':
    c = "R5UALCUVJDCGD63RQISZTBOSO54JVBORP5SAT2OEQCWY6CGEO53Z67L"
    # 用'='填充字符串使其长度为8的倍数, 方便后序进行Base32解密
    lenPadding = 8 - (len(c) % 8)
    c += lenPadding * "="
    for i in range(1, 26):
        ca = caesarCrack(c, i)
        m = base64.b32decode(ca)
        try:
            m = m.decode()
            print(m)
        except UnicodeDecodeError:
            continue

結果

wctf2020{
    
    ni_hao_xiang_xiang_da_wo}

FLAG は flag{ni_hao_xiang_xiang_da_wo} であることがわかります。

テーマについて考える

  1. ブッダは言いました: 「それは 4 日間しか続かない。最初、著者は 4 つの暗号化方式が使用されていると考えていましたが、実際のプロセスでは 5 つの暗号化方式が使用されました。では、4 日とは一体何を意味するのでしょうか?」
  2. 聖書は「旧約聖書」と「新約聖書」に分かれており、フェンス暗号やシーザー暗号を使って解読する前にdoyoukonwxxxxが削除されていることが分かりますが、これは「新約聖書」と「旧約聖書」を意味していると考えられます。
  3. 順風満帆なwpを見て、実は作者も色々な試みをしており、気分は旗の通りです。

おすすめ

転載: blog.csdn.net/Rm_mR/article/details/130373609