Port 53

明日のための技術メモ

BCACTF WriteUP その1

今まで常設のCpawCTFしか経験がなく、時間制限のある大会に出たことがなかった。 そんな中、初心者OKのCTFがあると紹介され、即エントリーしてみた。
実際は中高生向けだそうで。

BCACTF 問題ジャンルはbinary-exploitation, cypto, forensics, programming, quest, reversing, webの7つ。
1人で参加して、結果は3025pt・278位/902チームだった。
binaryとcryptoはあんまり解けなかった。picoCTFとかで勉強したい。

書いていたら長くなったので、welcome, crypto, forensicsまでここで書く。
続きはその2で。

welcome

肩慣らし問題みたいなもの。

survey (25pt)

最終日の追加問題。最悪何も書かないで提出しても通る。

hello-world (50pt)

問題文にあるフラグを入力して提出。
フラグの形式はこれですよ、の説明問題っぽい。

net-cat (50pt)

問題文に出ているncコマンド(netcat)をそのままターミナルで実行する。
するとフラグが結果に出力される。

~/Downloads $ nc challenges.ctfd.io 30126 
bcactf{5urf1n_7h3_n37c47_c2VydmVyc2lkZQ}

wuphf (50pt)

問題文がSNSの話。そういえばBCACTFのトップページに TwitterInstagramとDiscordのアイコンがあったなぁ。
各アカウントにアクセスして、フラグの断片を集めて並び替えればOK。

Flag-ment(Discord):_u5_uP_d3
Flag-ment(Twitter): bcactf{h17
Flag-ment(Instagram): VwaGYuY29t}

bcactf{h17_u5_uP_d3 VwaGYuY29t}

crypto

暗号系の問題。解けたのは最初の3つだけ。

basic-numbers(50pt)

問題にいかにも、な数字の羅列が。
8桁の2進数を1文字分のasciiコードとして変換する

01100010 00110001 01101110 01100001 01110010 01111001 01011111 01110011
00110000 01101100 01110110 00110011 01100100 01011111 01100111 00110000
00110000 01100100 01011111 01110111 00110000 01110010 01101011
→b1nary_slv3d_g0d_w0rk

cracking-the-cipher (50pt)

問題文の最後によくわからん文字列が。多分これがフラグ。
レシートに"Caesar Salad Dressing"とあるので、シーザー暗号とみた。
2文字ずらして解読。シーザーサラダ食べたい。

vjg rcuuyqtf ku ngctpkpi_ecguct_ekrjgtu_ku_hwp!
→the password is learning_caesar_ciphers_is_fun!

three-step-program (125pt)

答えにたどり着くまでに3つ違うことをするらしい。
ファイル名からしてよくわからん文字列だったので色々とデコードしたら、
base64でデコードできた。

RmlsZW5hbWU.txt → Filename.txt

中身を見ると全体で3ブロックに分かれている。
まずは1つ目。base64でデコードする。

MzIgLSAgfDMgVGltZXMgQSBDaGFybXwgLSAzMg==
→32 -  |3 Times A Charm| - 32

2つ目。base64でやっても微妙だった。
前のヒントを見ると「32」「三度目の正直」とあるので、base32で3回デコードした。
英語っぽいけどなんか怪しい発音の文章が出てきた。

JJGTEVSLKNBVISSGINCU2VCTGJFVETCW
KNGVGTKLKJEEKQ2VJNEUSNC2KZKVCS2OJFNE4RKPKNFUUSKSJNKTITSDKJFEERKUI5GTETKJLJGVMQ2RJNLEWUSLIZAVES2DJRFE2RKDK5JU2SKKJBCTEVKLJBDUSWSUI5KTETSLKZEVKS2TLJKEWUSFIU2FKU2WJRBEIVCFKFJVASKWIFKU2USLIRDUUR2FGJJEWQ2LKJGFMR2TJNCUYSSIIRFU2U2UJFCTEVKJKZJUMSKKJNKU6VK2KRFVES2VGZKEWUSKIJCVIR2XKNBEUNKGIZDVMMSEJRFEERKDKRJVOR2SJJKUGV2TJVFDKR2VGRLVGSKLJUZEKSKWJNHEWWSKKVDVCSSUJFJEERJUK5JVKTCCIZKEKVCDIVFFUQKWKFITEQSJJZEVKV2SGJDEYQSCKVBVMSSTJFFEMRSFKMZEISKFLJCVSTKTIZEUUTCGJ5JVUV2KJJAVKNSVKNMUWTSBKZKU2MSUJJLEYRCFKEZEETCKJNDECVCSKZFU4QSVI5ITEU2LJZCEMU2VJNDEYRSOIVKVCS2OJRFE4RKPKFNFIS2SINCTEUSTKZGEERCVKNJEGRKKGVDEISKXINBEOVSDIVGVES2DJM2UIVKXKNFUKSS2I5LE2VSLLBGEKWSV
JFJFGUCLLJHEKQ2QJI2UQVJWKE6T2PJ5

Why english so ard to tok. 
No speak more English. 
Ail gi you tu hints to read my encrypted languich. 

1. SALT iz key to gret food!
2. Le francais crypte le meilleur

3つ目。「SALT」, 「フランスの暗号」と言えばヴィジュネル暗号。
saltをキーに解読する

lhlm oad lamaew eyhmgs. lg i sxsro rgu ntee qhj a qesg? dbfcp rgu stne xtve tm lhtl xac, b’dl rh wadr gn jhm ayw zayw at zowr. 
mvscey{bu57_j0n_o4i7_kgbhmffhlqe} bfm, te htjnpw, feim lixx at hhf’t mx ko dbepwx…

that was simple enough. so i heard you came for a flag? since you have made it this far, i’ll go easy on you and hand it over. 
bcactf{ju57_y0u_w4i7_znjhbmnhaxm} but, be warned, next time it won’t be so simple…

forensics

解けたのは7つ。wavey解きたかった。
ここでforensicsに必要な基本的なコマンドを覚えていくことになる。

split-the-red-sea (100pt)

readsea.pngにフラグがあるらしい。
普通に見ても真っ赤な画像なだけなので、stringsコマンドで偵察。
stringsコマンドはバイナリファイルなどの印字可能な文字列を表示してくれる。
レイヤー名がフラグになっていた。

strings readsea.png

# 抜粋
 <photoshop:LayerName>bcactf{7w0_r3d5_sdf3wqa}</photoshop:LayerName>
 <photoshop:LayerText>bcactf{7w0_r3d5_sdf3wqa}</photoshop:LayerText>

bca-craft (125pt)

Minecraftやったことないので、展開して中身を偵察。
flag.mcfunctionsという怪しいファイルがあり、エディタで開いた所、
フラグが書いてあった。

file-head (125pt)

バイナリエディタでファイルを開き、ヘッダをpingのものに直したのち開き直す。
拡張子でヘッダが決まっていて、ここ を参考に編集。

of-course-rachel (150pt)

ファイルを開くと文字列が大量に書かれたpngファイルが。
これをGoogleDriveへドラッグ&ドロップしてテキスト化する。
テキスト化したものを16進数変換にかけてまとめるとpythonコードが出てきた。
そのまま実行するとフラグが出てくる。

open-docs (150pt)

Yay!っていうテンションの高さ。 docxの仕組みをここを参考に調べる。
foremostコマンドを使って、ファイルをバラバラにし、
secret.xmlに書いてある文字列をbase64でデコードする。

study-of-roofs (150pt)

屋根の写真の上に変なゴミみたいな画像がついた画像だった。
レイヤーとかでくっつけたのかなと思ったので、binwalkでバラしてみる。

~/Downloads $ binwalk -e dem_shingles.jpg

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             JPEG image data, EXIF standard
12            0xC             TIFF image data, big-endian, offset of first image directory: 8
14689         0x3961          Unix path: /www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt=
1562983       0x17D967        JPEG image data, EXIF standard
1562995       0x17D973        TIFF image data, big-endian, offset of first image directory: 8
1568937       0x17F0A9        Unix path: /www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http
1573688       0x180338        Copyright string: "Copyright (c) 1998 Hewlett-Packard Company"

やっぱり画像が2つ合成されていた。
foremostコマンドで画像を取り出し、片方にフラグが書いてあった。

corrupt-psd (200pt)

file-headと同じかな、と思い、バイナリエディタを開いてヘッダをpsdのものに修正。 開き直すとフラグが出てきた。

programming以降は、後半へ続きます。