BMZCTF-MISC(一)WriteUp

その他

http://www.bmzclub.cn/challenges
復号化

0x01サインインの質問

パブリックアカウントに注意してください:ホワイトハットコミュニティ、返信キーワード:BMZCTF取得フラグ
問題のサインイン

0x02 2018HEBTUCTFサインインの質問

2018HEBTUCTFサインインの質問
圧縮パッケージをダウンロードします。接尾辞のないzipという名前のファイルです。を使用して010editor開き、ファイルヘッダーを
zipファイルヘッダー
確認します。圧縮されたパッケージであることを確認し、サフィックスを追加して.zipから、winrarで開きます。
ZIPファイル
接尾辞のない別のファイルであることがわかり、解凍して再度010editor開き
タイプファイル
ます。jpgファイルのようです。ファイルの最後を見て
ファイルの終わり
ください。フラグを取得できます。

0x03 2018HEBTUCTFワイヤーシャークが必要な場合があります

2018HEBTUCTFあなたはwiresharkが必要かもしれません
添付ファイルをダウンロードします。これはフローパッケージファイルであり、wiresharkで開き
ここに画像の説明を挿入
ます。TCPフローをトレースして、DVWAプラクティスフローパッケージであることを確認します。
ここに画像の説明を挿入
ストリームを1つずつ確認すると、17番目のストリームにflag.txtファイルがアップロードされていることがわかりました。ファイルコンテンツは、暗号化されたコンテンツの文字列です。
flag.txt
暗号文を観察し、大文字と小文字、数字、および「=」を確認します。予備的な判断はbase64暗号化です。オンライン復号化を使用して試行し、次にURLデコードを使用して、フラグを取得します。
base64
urlデコード

2018ネッツカップレイトサインインの質問

2018ネッツカップレイトサインインの質問
添付ファイルをダウンロードします。解凍後、暗号文の文字列を含むテキストです。AAoHAR1TIiIkUFUjUFQgVyInVSVQJVFRUSNRX1YgXiJSVyJQVRs=最初の判断はbase64暗号文であり、base64で復号化した後は、文字化けした文字の文字列です
base64復号化
。圧縮パッケージのタイトルを確認してください。ヒント:次のeasy xor???
ことができます。フラグを取得する前に、それがXORであるかどうかを判断します。Pythonスクリプトを書く

import base64
str1 = 'AAoHAR1TIiIkUFUjUFQgVyInVSVQJVFRUSNRX1YgXiJSVyJQVRs='

str2 = base64.b64decode(str1)
for i in range(200):
    tmp=''
    for j in str2:
        tmp += chr(j^i)
    print (tmp)

実行後、フラグを取得できます
国旗

Traffic_Light

ダウンロードは画像
ここに画像の説明を挿入
です。画像を分解し
て1688枚の画像を取得します。画像を
ここに画像の説明を挿入
観察します。1。2の
倍数の画像が点灯していないことがわかります。無視できます。
2.緑色のライトと赤色のライトの合計が8または8の倍数の場合、次の画像は黄色である必要があります。
バイナリであると推測できます。緑は1、赤は0です。
コーディング用のスクリプトを作成します。

# -*-coding: utf-8 -*-
from PIL import Image
 
binstr = ""
flag = ""

def decode(s):
    return ''.join([chr(i) for i in [int(b, 2) for b in s.split(' ')]])

for i in range(1168):
    image=Image.open(r'./202011/'+str(i)+'.jpg')
    # print (image.getpixel((115,55)))#输出颜色值
    # print (image.getpixel((115,145)))
    tmp1 = image.getpixel((115,55))
    tmp2 = image.getpixel((115,150))
    # print (type(tmp1))
    if(tmp1[0] > 250):
        binstr += '1'
    elif(tmp2[1] > 250):
        binstr += '0'
    else:
        binstr += ''
print (binstr)

for i in range(len(binstr)):
    if i%8==0:
        flag +=decode(binstr[i:i+8])
print(flag)

フラグを取得

0110011001101100011000010110011101111011010100000110110000110011001101000111001100110011010111110111000000110100011110010101111100110100011101000111010000110011011011100111010000110001001100000110111001011111011101000011000001011111011101000111001000110100011001100110011000110001011000110101111101110011001101000110011000110011011101000111100101011111011101110110100000110011011011100101111101111001001100000111010101011111001101000111001000110011010111110011000001110101011101000111001100110001011001000011001101111101
flag{Pl34s3_p4y_4tt3nt10n_t0_tr4ff1c_s4f3ty_wh3n_y0u_4r3_0uts1d3}

修理する

ダウンロード後は2次元のコード画像ですが、黒いフレームしかありません。
ここに画像の説明を挿入
フォトショップを使用して修復および識別します
ここに画像の説明を挿入
。getflag:flag {easyQRcode}

実際のCTFer

添付ファイルを画像としてダウンロードします。
ここに画像の説明を挿入
高さを変更し
ここに画像の説明を挿入
ます。下に別の画像が表示されます。
ここに画像の説明を挿入
画像を拡大すると
ここに画像の説明を挿入
、旗が表示されます。よく見ると、旗の
が表示されます{d2b5543c2f8aa8229057872dd85ce5a9}

解決できない秘密

ダウンロード後は、ファイルファイルとflag.docxテキストを含む圧縮パッケージ
ここに画像の説明を挿入
です。テキストツールでファイルファイルを開きます。数字が多く、英語が少し含まれています。16進数の疑いがあります
。010editorに入れて、
ここに画像の説明を挿入
base64の疑いがある末尾の「=」を確認してください。base64でデコード:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\RealVNC]

[HKEY_CURRENT_USER\Software\RealVNC\vnclicensewiz]
"_AnlClientId"="8f5cc378-2e1d-4670-80e0-d2d81d882561"
"_AnlSelected"="0"
"_AnlInclRate"="0.0025"

[HKEY_CURRENT_USER\Software\RealVNC\vncserver]

[HKEY_CURRENT_USER\Software\RealVNC\VNCViewer4]
"dummy"=""

[HKEY_CURRENT_USER\Software\RealVNC\VNCViewer4\MRU]
"00"="127.0.0.1"
"Order"=hex:00,01
"01"="127.0.0.1:5900"

[HKEY_CURRENT_USER\Software\RealVNC\WinVNC4]
"Password"=hex:37,5e,be,86,70,b3,c6,f3
"SecurityTypes"="VncAuth"
"ReverseSecurityTypes"="None"
"QueryConnect"=dword:00000000
"PortNumber"=dword:0000170c
"LocalHost"=dword:00000000
"IdleTimeout"=dword:00000e10
"HTTPPortNumber"=dword:000016a8
"Hosts"="+,"
"AcceptKeyEvents"=dword:00000001
"AcceptPointerEvents"=dword:00000001
"AcceptCutText"=dword:00000001
"SendCutText"=dword:00000001
"DisableLocalInputs"=dword:00000000
"DisconnectClients"=dword:00000001
"AlwaysShared"=dword:00000000
"NeverShared"=dword:00000000
"DisconnectAction"="None"
"RemoveWallpaper"=dword:00000000
"RemovePattern"=dword:00000000
"DisableEffects"=dword:00000000
"UseHooks"=dword:00000001
"PollConsoleWindows"=dword:00000001
"CompareFB"=dword:00000001
"Protocol3.3"=dword:00000000
"dummy"=""

RealVNC"Password"=hex:37,5e,be,86,70,b3,c6,f3
の最初[HKEY_CURRENT_USER\Software\RealVNC\vncserver]中央の位置が表示さます。だからVccx4.exe、クラックするために使用
ここに画像の説明を挿入
ます:パスワードを取得します:!QAZ2wsx
パスワードでflag.docxを開き、画像を移動し、すべてを選択してフォントの色を変更すると、フラグが表示されます
ここに画像の説明を挿入

記憶

添付ファイルをダウンロードした後volatility、分析に使用します

ここに画像の説明を挿入
トピックは「メモリイメージの分析、管理者のログインパスワードの解読、フラグはプレーンテキストパスワードのMD5値」です。
イメージ内のハッシュ値を分析します。
ここに画像の説明を挿入
暗号文を取得します。

Administrator   500     0182bd0bd4444bf867cd839bf040d93b        c22b315c040ae6e0efee3518d830362b
Guest   501     aad3b435b51404eeaad3b435b51404ee        31d6cfe0d16ae931b73c59d7e0c089c0
HelpAssistant   1000    132893a93031a4d2c70b0ba3fd87654a        fe572c566816ef495f84fdca382fd8bb

変更を加え、中央の「」を「:」に変更します。

Administrator:500:0182bd0bd4444bf867cd839bf040d93b:c22b315c040ae6e0efee3518d830362b
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0
HelpAssistant:1000:132893a93031a4d2c70b0ba3fd87654a        fe572c566816ef495f84fdca382fd8bb

それをファイルとして保存し、ジョンで爆破します

ここに画像の説明を挿入

パスワード123456789
取得してから、フラグであるmd5暗号化を取得できます
ここに画像の説明を挿入
が、送信エラーが問題である可能性があります。

2019年の戦いに勝つ

添付ファイルをダウンロードし
ここに画像の説明を挿入
、ビンウォークで写真を分析します。2
ここに画像の説明を挿入
つの写真を分解し
ここに画像の説明を挿入
ます。QRコードをスキャンし
ここに画像の説明を挿入
ます。有用な情報はありません。
次に、QRコードの画像を分析し
ここに画像の説明を挿入
ます左下隅
フラグ{You_ARE_SOsmart}が表示され、
すべてを書き込むことができます。{}内ではありません。

2020sdnisc-CTFの起源

添付ファイルをテキストとしてダウンロードします。
ここに画像の説明を挿入
各行の後に基本的に==
があることを確認すると、base64ステガノグラフィである可能性があります。スクリプトで復号化:

def get_base64_diff_value(s1, s2):
    base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
    res = 0
    for i in xrange(len(s2)):
        if s1[i] != s2[i]:
            return abs(base64chars.index(s1[i]) - base64chars.index(s2[i]))
    return res


def solve_stego():
    with open('flag.txt', 'rb') as f:
        file_lines = f.readlines()
        bin_str = ''
        for line in file_lines:
            steg_line = line.replace('\n', '')
            norm_line = line.replace('\n', '').decode('base64').encode('base64').replace('\n', '')
            diff = get_base64_diff_value(steg_line, norm_line)
            print diff
            pads_num = steg_line.count('=')
            if diff:
                bin_str += bin(diff)[2:].zfill(pads_num * 2)
            else:
                bin_str += '0' * pads_num * 2
            print goflag(bin_str)


def goflag(bin_str):
    res_str = ''
    for i in xrange(0, len(bin_str), 8):
        res_str += chr(int(bin_str[i:i + 8], 2))
    return res_str


if __name__ == '__main__':
solve_stego()


ここに画像の説明を挿入
中括弧を完了するためのフラグ取得できます

2020sdnisc-シンプルなjs

ダウンロードの添付ファイルはjsファイルです。
開く:
ここに画像の説明を挿入

コードの一部です。アルゴリズムのプロセスと結果を示します。逆の操作で問題ない限り。
スクリプトを書く:

s='19131e18041b1d4c47191d19194f1949481a481a1d4c1c461b4d484b191b4e474f1e4b1d4c02'
flag=''
for i in range(0,len(s),2):
    tmp = int(s[i:i+2],16)
    
    #print (tmp)
    flag+=chr((255-128)-tmp)
print (flag)

フラグを取得します:flag {db38fbff0f67e7eb3c9d274fd180a4b3}

2020sdnisc-破損したトラフィックパッケージ

ダウンロード添付ファイルはトラフィックパッケージですが、wiresharkを開くことができません。
010editorで開きます。
ここに画像の説明を挿入
ファイルの最後にある圧縮パッケージを見つけて解凍し、zipファイルとして保存します。Open
ここに画像の説明を挿入
はbase64暗号化であり、復号化後はフラグです:flag {sdnisc_net_sQ2X3Q9x}

2020sdnisc-過去と現在

添付ファイルをダウンロードします。これは写真であり、binwalkで分析します。
ここに画像の説明を挿入

複数のファイルを取得して、1つずつ開きます。
ここに画像の説明を挿入
21154で見つかったフラグ
ここに画像の説明を挿入

2020sdnisc-左上隅の秘密

ダウンロードの添付ファイルはファイルとスクリプトです。オープンスクリプト:
画像のコンテンツを暗号化して添付ファイルのファイルを取得するコードです。逆の操作を実行するスクリプトを記述します。

flag_dec = open("flag.png","wb")
def file_decode(flag):
    i = 1
    while True:
        byte_str = flag.read(1)
        if (byte_str == b''):
            exit()
        byte_str = hex_decode(byte_str)
        file_write(flag_dec, byte_str)
        # print(byte_str, end="")
        i = i + 1

def hex_decode(byte_str):
    tmp = int.from_bytes(byte_str, byteorder="big")
    tmp = tmp ^ 128
    if (tmp % 2 == 0):
        tmp = tmp + 1
    else:
        tmp = tmp - 1
    tmp = bytes([tmp])
    return tmp

def file_write(flag_dec, byte_str):
    flag_dec.write(byte_str)

if __name__ == '__main__':
    with open("./flag_enc.hex", "rb") as flag:
        file_decode(flag)
flag_dec.close()

画像を復元し、画像
ここに画像の説明を挿入
の左上に線見つけます。色を確認します。
ここに画像の説明を挿入
緑色で秘密を推測し
ます。スクリプトを使用して暗号文を取得します。

from PIL import Image
image =Image.open('flag.png')
c=0
aa=''
for i in range(120):
    aa+=chr(image.getpixel((c,c))[-2])
    c+=1
print (aa)

ここに画像の説明を挿入

秘密を発見する:
ZmxhZ3tjNmU0Yzk5YTYzODhjNWQyYTlhZTZlZjZhODQzY2VhNn0 =
Base64を復号化してフラグを取得:
flag {c6e4c99a6388c5d2a9ae6ef6a843cea6}

太湖カップ-MISC

ダウンロードの添付ファイルは、ファイルと圧縮パッケージを含む圧縮パッケージです。
ここに画像の説明を挿入
さまざまな方法を試しても役に立たなかった場合は、添付ファイルのfun.zipを削除してください。
ここに画像の説明を挿入
次に、圧縮されたパッケージを修復すると、パスワードがなくなっていることがわかります。
ここに画像の説明を挿入
開いた後、それは
ここに画像の説明を挿入
接尾辞が変更された暗号文のセクションですそしてそれを開き
ここに画像の説明を挿入
ます:テキストの複数の段落を見つけます:
ここに画像の説明を挿入
さまざまなパスワードをテストし、ヒルパスワードが新しく発見された2つの文を解決できることを見つけ
ここに画像の説明を挿入
ます:新しい文字列を取得します:
愛と平和

この文をパスワードとして使用し、rabbitを使用して残りの段落を復号化します
ここに画像の説明を挿入
。Get:

LR2TMNLCGBOHKNDGGVRFY5JWGZTDAXDVMZTDCYK4OU4GCZRYLR2TSNTCHBOHKNJUMM4VY5JVGBSTOXDVHE3DIZC4OU2TIM3ELR2TQYLGHBOHKOJWGQYFY5JWGQ3DSXDVHE3GEOC4OU2TAZJXLR2TOZRTMROHKOBVME4VY5JVGRQTIXDVHAYDEOC4OU4GCZRYLR2TSNTCHBOHKNRRGY3VY5JVHA2WKXDVHAZDOMS4OU2WGMDBLR2TKNDDHFOHKODGMU3FY5JYMFSTMXDVG5QTOYK4OU3DENBQLR2TSNRUMROHKNRSGEYVY5JVMZTDKXDVHE3GEOC4OU3TSNJXLR2TQYLFGZOHKNLGMY2VY5JVGRRTSXDVHE3DIMC4OU2TMYRULR2TKNDDHFOHKNJWMM4VY5JUMZSWKXDVGU4TGN24OU4TMM3GLR2TMY3FGJOHKOBSG4ZFY5JYGM4GCXDVGVRGGMS4OU4GCZJWLR2TKOBVMVOHKNJUHEZFY5JYGM4GCXDVG43TGZK4OU3DEMJRLR2TKNDDHFOHKNRSGQYFY5JUMYYGMXDVHAYDKZK4OU4DKYJZLR2TSNTCHBOHKNRRGBSFY5JZGVRWIXDVGU2DGNS4OU3DENBQLR2TIZTFMVOHKNRWGJTFY5JYGI3TEXDVGY2DMOK4OU4GCMZWLR2TKNTCGROHKNJUMM4VY5JZHA2TQXDVGYYTAZC4OU2TIYZZLR2TKMZXGNOHKNDGMVSVY5JVGRRTSXDVG5QTOYK4OU4DOMLDLR2TSNRUGBOHKNJWMM4VY5JUMYYGMXDVGVTGMNK4OU2TIYZZLR2TMNBWHFOHKNJUMM4VY5JUMVQTMXDVHAZTQYK4OU2TIYZZLR2TONZTMVOHKNJUME2FY5JVHE4DEXDVHE4DKOC4OU2TSOBS

base32を
ここに画像の説明を挿入
再度復号化するUnicodeを
ここに画像の説明を挿入
再度デコードする新しい仏陀の言葉を解読する
ここに画像の説明を挿入
段落を
取得し、これらの単語でfun.zipを解凍してオーディオファイル取得します。
周波数スペクトルを分析した後、フラグを取得できます
ここに画像の説明を挿入

氷でコーラ

添付ファイルをダウンロードしてください、それは写真です:
ここに画像の説明を挿入
ビンウォーク分析を使用してください:
ここに画像の説明を挿入

いくつかのファイルを取得します。
1つずつ確認し、2AE96ファイルで通常の文字を見つけます。
ここに画像の説明を挿入
文字列に変換します。

s='834636363695438346369595364383469595954383469595364383463636363643834636363695438346369595364383469595364334453443834636953636438346369536954383463636953643834636369543344534438346369595438346369536954383463636363643834636363643344534438346369595364383463695953643834636369543834695363643344534438346363695364383463695369543834636369536438346369595954383469595364383469536954383463636363643834636953643834636369543834695369543834636959543834636369536'
print (s)
for i in range(0,len(s),2):
    print (chr(int(s[i:i+2])),end='')

取得する:

S.$$$_+S.$__$+S.___+S.__$+S.$$$$+S.$$$_+S.$__$+S.__$+"-"+S.$_$$+S.$_$_+S.$$_$+S.$$_+"-"+S.$__+S.$_$_+S.$$$$+S.$$$+"-"+S.$__$+S.$__$+S.$$_+S._$$+"-"+S.$$_$+S.$_$_+S.$$_$+S.$___+S.__$+S._$_+S.$$$$+S.$_$+S.$$_+S._$_+S.$__+S.$$_$

jjcodeによく似ています。「S」を「$」に
加えて、固定スイッチと末尾に置き換えます

$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+"")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+"")[$.__$])+((!$)+"")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!""+"")[$.__$])+($._=(!""+"")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!""+"")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+"\""+这里放密文+"\"")())();

jjcodeを使用してデコードします:既存の
ここに画像の説明を挿入
フラグ

pcap

ダウンロード添付ファイルはトラフィックパッケージです。Wiresharkで開き
ます:そしてtcpストリームをトレースします:
以下に示すようにストリームの1つを
ここに画像の説明を挿入
見ることができます:フラグを見ることができます。フローの法則を順守して
ここに画像の説明を挿入
ください。フラグ情報を含むフローの長さは91であることがわかります。長さで並べ替え:
ストリームごとにスプライシング
ここに画像の説明を挿入
ここに画像の説明を挿入

フラグを取得できます:flag {d989e2b92ea671f5d30efb8956eab1427625c}

pcap_analysis

添付ファイルをトラフィックパッケージとしてダウンロードします。
Wiresharkで開きます。そして、tcpストリームを追跡します。ストリームの
1つで、次の画像が見つかりました:
ここに画像の説明を挿入
フラグを取得するためにスプライスされました:flag {323f986d429a689d3b96ad12dc5cbc701db0af55}

ワンディングカップ2020ブーム

添付ファイルをexeファイルとしてダウンロードして開きます。
最初に、Md5コードの一部を提供し、それをオンラインでブラストしました。
ここに画像の説明を挿入
パスコードを取得します。en5oy2
番目のレベルは3次線形方程式です。
ここに画像の説明を挿入

ブラストを実行します。

for x in range(100):
    for y in range (100):
        for z in range(100):
            if (3*x-y+z==185)&(2*x+3*y-z==321)&(x+y+z==173):
                print (x,y,z)

解を得る:
74
68
31
3番目のレベルは、1つの変数の2次方程式です。
ここに画像の説明を挿入

同じ発破:

for x in range(1000000000):
    if(x*x+x==7943722218936282):
        print (x)
        break

解決策を入手してください:89127561
最後にフラグを入手してください:flag {en5oy_746831_89127561}

おすすめ

転載: blog.csdn.net/Crazy198410/article/details/109612549