記事のディレクトリ
- その他
-
- 0x01サインインの質問
- 0x02 2018HEBTUCTFサインインの質問
- 0x03 2018HEBTUCTFワイヤーシャークが必要な場合があります
- 2018ネッツカップレイトサインインの質問
- Traffic_Light
- 修理する
- 実際のCTFer
- 解決できない秘密
- 記憶
- 2019年の戦いに勝つ
- 2020sdnisc-CTFの起源
- 2020sdnisc-シンプルなjs
- 2020sdnisc-破損したトラフィックパッケージ
- 2020sdnisc-過去と現在
- 2020sdnisc-左上隅の秘密
- 太湖カップ-MISC
- 氷でコーラ
- pcap
- pcap_analysis
- ワンディングカップ2020ブーム
その他
http://www.bmzclub.cn/challenges
復号化
0x01サインインの質問
パブリックアカウントに注意してください:ホワイトハットコミュニティ、返信キーワード:BMZCTF取得フラグ
0x02 2018HEBTUCTFサインインの質問
圧縮パッケージをダウンロードします。接尾辞のないzipという名前のファイルです。を使用して010editor
開き、ファイルヘッダーを
確認します。圧縮されたパッケージであることを確認し、サフィックスを追加して.zip
から、winrarで開きます。
接尾辞のない別のファイルであることがわかり、解凍して再度010editor
開き
ます。jpgファイルのようです。ファイルの最後を見て
ください。フラグを取得できます。
0x03 2018HEBTUCTFワイヤーシャークが必要な場合があります
添付ファイルをダウンロードします。これはフローパッケージファイルであり、wiresharkで開き
ます。TCPフローをトレースして、DVWAプラクティスフローパッケージであることを確認します。
ストリームを1つずつ確認すると、17番目のストリームにflag.txtファイルがアップロードされていることがわかりました。ファイルコンテンツは、暗号化されたコンテンツの文字列です。
暗号文を観察し、大文字と小文字、数字、および「=」を確認します。予備的な判断はbase64暗号化です。オンライン復号化を使用して試行し、次にURLデコードを使用して、フラグを取得します。
2018ネッツカップレイトサインインの質問
添付ファイルをダウンロードします。解凍後、暗号文の文字列を含むテキストです。AAoHAR1TIiIkUFUjUFQgVyInVSVQJVFRUSNRX1YgXiJSVyJQVRs=
最初の判断は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}