読者です 読者をやめる 読者になる 読者になる

場阿忍愚CTF #burningCTF メモ

ここ数ヶ月場阿忍愚CTFに参戦して、昨日の場阿忍愚CTF 解説会&パーティ in 神戸にも参加したことなので、自分で解けた範囲でWrite-Upとも呼べないメモ書きをかなりテキトーだけど書いてみる。 詳しいWrite upは他の方のをよろしくお願いします。

練習

image level 1

1枚の画像を水平分割した4枚の画像が渡されるのでくっつけるだけ。一応こんな感じのHTMLを殴り書いて終わり。

<img src="101-level001a.png">
<img src="101-level001b.png">
<img src="101-level001c.png">
<img src="101-level001d.png">

芸術

総じてエスパい問題

ワットイズディス?

篆書体で「大和世幾利天」、世幾由利天伊はそれぞれカタカナのセキユリテイの字源であるのでflagは大和セキュリティ

cole nanee?

画像。ヒントは漢字一文字。完全にカンである。

Lines and Boxes

一見漢字のようにも見えるがよく見ると少し前に話題になった日本人にだけ読めないフォントに近いやつ、つまり漢字というゲシュタルトを破って読むとflagのword play

二進術(binary)

壱萬回

詳しくは覚えてないけど1万回整数計算をさせる64bitELFバイナリだったと思うので、取り敢えずGDBGUIフロントエンドのNemiverで開く。 1万回判定部分っぽいところを見つけてそこで止めて、フラグを書き換えるなりして1万回後の方へすっ飛ばすとOK。

解読術(crypto)

image level 5

ハッシュ値っぽいファイル名で、ASCII文字が1文字ずつ書かれた画像ファイル数枚が入ったZIPが渡されるので、取り敢えずハッシュ値ググるmd5("1"), md5("2")という感じのハッシュ値だと分かるので元の数字の順に並べるとKOBE-GYUというflagになった気がする。

Ninja Crypto

謎の文字で書かれた単語。「忍者なら分かる暗号でござる。」とのことなので[忍者 暗号]🔍すると忍者文字というのがヒットするのでそれにそって解読すると「ヤマトイエバ」カワ

Decrypt RSA

文字通りRSAをcrackしろというもの。公開鍵のpemファイルが渡されているので、openssl asn1parseで取り敢えずnを抜き出す。大した桁数ではないのでいい感じに加工して10進表記になおしてfactordb.comにぶち込むと見事に2つの素数p,qの積に分解される。p,qが分かったのでius/rsatool秘密鍵ファイルを作って暗号済みデータを復号させると答えが出たはず。

ちなみにrsatoolはPythonで書かれてたけど依存ライブラリとかが気に食わなかったのであとでRubyで似たようなものを書いた。 https://gist.github.com/tasuten/9324404aaa0c9862affb

解析術(forensics)

情報漏洩

USB通信データをキャプチャしたpcap。パケット数も多くないので眺めてると明らかにパケットサイズが大きなものがある+その前にPNGという文字列を含むパケットということでサイズの大きなパケットの前後ぐらいの怪しいののPayloadをexportして、catコマンドで結合する。ただしこのままだと頭にゴミが付いているのでhexed.itなどのバイナリエディタでそこを削ってPNGファイルとして妥当なファイルにして開くとflagが書いてある。

Cool Gadget

途中が破損したJPEGが渡される。取り敢えずstringsするとremoveme={...}みたいな部分があるのでバイナリエディタでそこだけ切り取ると画像は正常な画像になる。画像はCryptexというダ・ヴィンチ・コードに出てきたらしいガジェットの写真。EXIFにaes-128-cbcとあることと、removemeの{}の中をBASE64と当たりを付けて復号するとSalted___(以下バイナリ)のような文字列が出る。ググるとOpenSSLで暗号化した際のフォーマットっぽいので、echo -n "removemeの中身" | openssl enc -d -aes-128-cbc -base64のようにすると共通鍵暗号の鍵フレーズを訊かれる。ここでしばらく考える。よく見ると先ほどの写真のど真ん中に小さな三角で示された部分を読むとEAHIVとあるので突っ込んでみるとビンゴ。flagが出る。

電網術(network)

ftp is not secure.

文字通りFTPの問題。平文通信なのでひとまずpcapのログイン箇所を見ると一応認証情報は消されてる。けど追っていくとflag.tarというファイルのダウンロード過程がそのまま残っているのでFTP-DATAをFollow TCP StreamしてRAWでSave as、tarファイルを解答すると中にZIPファイル、その中にBASE64されたflagあり。

ベーシック

BASIC認証の問題。ひとまず認証後の通信を見るも「ここにはflagは無いよ」って嘲笑れるので、認証情報を見るとCredentialがhttp://burning.nsc.gr.jp。URL?と思いつつひとまずアクセスするとBASIC認証の画面が。ここで先のCredentialをよく見る。BASIC認証のフォーマットはuser_name:passwordである。:区切りである。ということは、http://burning.nsc.gr.jpと解釈できるのでユーザ名http、パスワード//burning.nsc.gr.jphttp://burning.nsc.gr.jpにログインするとflagが出る。

Japanese kids are knowing

問題文はIPv4アドレスと「ポートスキャンOK」とのこと。取り敢えずnmapでポートスキャンをかけるもfilteredなSMTPのみ。フルスキャンを駆けるとopenなポートがあるのでtelnetするとメッセージが出る。

<C-D-E-F-E-D-C---E-F-G-A-G-F-E---C-C-C-C-CCDDEEFFE-D-C->what animal am i?the fla
g is the md5 hash of my name in lower case.Connection closed by foreign host.

C,D,E,G,Aなどの並びから楽譜と推測するとこれはカエルの歌。つまりflagはecho -n frog | md5sum

Malcious code

pcapngファイル。NW系の問題で大体怪しいのは平文通信部なので平文通信のHTTP部を見る。いくつかのファイルをDLしている模様。WiresharkのExport Objects機能で吐き出させると、p.lnkという気になるファイルが。Windowsのショートカットファイルみたいなので取り敢えずエディタで開いてみると中でpackerでpackしたJSを吐いているっぽい。あと文字コードが気持ち悪い感じなのでなんとかしてプレーンテキストにして、JSの難読化を解除するとどうやら自分のIPアドレスをどっかのサーバにPOSTしてるっぽい。ここでアクセス先にcurlでPOSTしてみるも何かが変。IPアドレスを取得しているということは、と考えて元のpcapngでのクライアントのIPアドレスをPOSTするとflag。

諜報術(recon)

KDL

「1998年にKDL (Kobe Digital Labo)がどういう人材を募集していましたか?」の問題文。Internet Archiveに残ってたのでソフトウェア開発エンジニアがflag。

Mr. Nipps

ある人物のある特定日時に居た経度緯度を示せとのこと。まずGoogleで調べたりしてTwitterアカウントを特定し、Twilogで当該日時を調べるとInstagramの投稿があった。Instagramでは撮影場所も載ってて、それはHootersかどこかの店だったが、このままでは緯度経度が一意に定まらない。Instagramは各撮影場所ごとにIDが振られ、そのIDを元に緯度経度などを出してくれるAPIがあるとのことなのでそれをなんとか突っついて終わり。

Akiko-chan

ある写真を含むWebページの*.wordpress.comドメインを答える問題。Google画像検索に投げて以上。

タナカハック

あるユーザの普段使っているユーザ名を答えろとの問題。「答えはwww.yamatosecurity.comに公開されているファイルにあります。」とのヒントから当該サイト内のPDFなどを漁ってるとある文書のメタデータに当該のflagが。

タイムトラベル

 「平成25年9月21日に50.115.13.104はどのドメイン名に結びついてたん?」なんかめっちゃ頑張ってGoogleで検索しまくった記憶があるけど思い出せない。偶然過去のドメインIPアドレスが対応付けのDBみたいなサイトを見つけてそこで色々探して見つけた記憶がある。

記述術(ppc)

search_duplicate_character_string

[最長重複文字列問題]🔍→コードもうあるやんけ→ちょっといじって答え出たポイー

JavaScript Puzzle

関数型言語的な考え方があればすぐ解ける問題だった気がする

Count Number Of Flag's SubString!

flag={...}というフォーマットはすぐに分かったので、取り敢えず各文字が何文字ずつ含まれるかを調べるスクリプトを書く。 あとはflag={a, flag={b, flag={c,…ってやっていってヒットしたらflag={ba…みたいに伸ばして行って文字数のストックが尽きるまでのスクリプトを書いた。

解凍?

タマネギ状に圧縮圧縮圧縮されてるファイル。幸い全部のフォーマットがtarで対応出来るもので、最近のtarはファイルフォーマットを自動識別するのでそれっぽいシェルスクリプト書いて実行して、エラーが出たら止めて中を見るとflagが出てた。

超文書転送術(web)

Network Tools

Aboutの大文字だけを読んでいくとヒントだよってオフラインの時に聞いたので見ると「Shellshock」。あとはShellshockのフォーマットにしたがってlsしてcat flag.txtか何かでOKだった気がする。

箱庭XSS1/2

Electronアプリだったので中身を掘ってasarをバラして中のファイルを見ると難読化はされているけどflagが含まれてた。Webじゃなくてrev的アプローチ

兵法術

将棋詰め壱弐参四

ソルバがWeb上にある。軸の方向に注意。あと弐に関しては軸の数字が一部入れ替わってるのでよく見て。


結果: f:id:tasuten:20160208152619p:plain


感想: 個人的にCTFは「CTF4bとかCpawCTFとかの入門向けに行くとそれなりに上位に行くけどksnctfしかりakictfしかり本格的な難易度のは歯がたたない中途半端ザコ」レベルだったので、「入門の次のステップ」という難易度で、ちょうど自分にマッチした難易度で満足度が高かったです。

特に運営、作問者の皆様お疲れ様でした。良いCTFでした。

当ブログに於いて、私tasutenによって創作されたことが自明である著作物に対しては、別途明示のある場合を除き全てCC0が適用されます。