op_blog読者になるop_blogこの広告は、90日以上更新していないブログに表示しています。Applicationを書いた。GitHub某所で話した時にはEFI_EXT_SCSI_PASS_THRU_PROTOCOLを使っていたが、EFI_SCSI_IO_PROTOCOLの方がシンプルなので切り替えた。これをブートローダーに設定すると、起動画面はこんな感じになる。4.3.4上でパススルーのホストドライブをeject出来る事を確認した。binary/にefiファイルとisoファイルを入れておいたので手軽にejectできる。GA-H77-D3H)では動かなかった。LocateHandleBufferでEFI_NOT_FOUNDが返ってくる。EFI_SCSI_IO_PROTOCOLが実装されていないか、何か勘違いしているのかもしれない。Write-up気が向いたのでWrite-upを書く。https://ctf.fluxfingers.net/static/downloads/fluxarchiv/hacklu2013_archiv_challenge1.tar.gzこんな感じ。p...Q...T..[...sarchivというのが独自形式のアーカイバで、そのアーカイバで作成されたFluxArchiv.arcというアーカイブファイルのパスワードを求めればいいらしい。IDAで処理の流れを追った所、hash_of_passwordという配列にパスワードのSHA1ハッシュが格納されていて、そのハッシュを秘密鍵としてRC4でファイルを暗号化していた。hash_of_passwordを参照している部分を中心に見ていくと、verifyArchiv関数が以下の様な処理をしている事を発見した。約22億通りなのでなんとか総当りできるか。こんな感じのコードを書いた。main(sys.argv)(multiprocessingの使い方これでいいのか知らない)最初はシングルプロセスのコードだった。i5-3317U上のシングルプロセスで2~3時間程度回していたらヒットした。2上の16プロセスとi7-3770上の8プロセスで、どちらも15分程度でヒットした。https://ctf.fluxfingers.net/static/downloads/fluxarchiv/hacklu2013_archiv_challenge1.tar.gzarchivのロジックの欠陥を利用してFluxArchiv.arcの中にフラグが隠してあるという事らしい。FluxArchiv.arcに格納されているファイル4つを全てarchivで展開して調べたが、もちろん何も無かった。FluxArchiv.arcは先頭32bytesのヘッダと1040bytesのブロックの繰り返しで構成されているので、全てのブロックの中にどのファイルでも使われていないブロックが有るのではないかという推測が立った。格納されているファイルが使用しているブロックの一覧等の情報を出力するコードを書いた。main(sys.argv)(元のコードが残念だったので終わってからかなり書き直した。170-177のがどのファイルからも使われていない事が分かったので、適当に復号して調べたら、ブロック160でflagを見つけた。_F4iL.....s7rd.\...どうでもいいけどこんなのとかもあった。Write-up解いた順。100pt)stamp.exeexeのダウンロードリンクのみが与えられた。exeを起動すると以下のウィンドウが表示された。IDAに読み込ませて眺めていると、以下の様な関数を発見した。2つのループでそれぞれ別々にTextOutAを繰り返し呼んでいる。片方では座標を配列から決定していて、もう片方ではrandから決定している。OllyDbgで両方のTextOutAにブレークポイントを仕掛けて実行し、何度かポチポチしていたらフラグが出てきた。内容を確認し、次の設問に回答してください。作成されたエントリの名前は何ですか?Filesystem001.binこんな感じ。........8.3ファイル名が見えるのでFATの一部を切り出したバイナリっぽい。適当なFATのイメージを作って同じタイムスタンプのファイルを作ることにする。/mnt/work0作成したファイル名でfat16.bin中を検索。40がなんとなくタイムスタンプっぽかったので、その値でFilesystem001.bin中を検索した。́_ゝ`)......。IDAではRXシリーズは逆アセンブルできなかった。等のキーワードで検索したがヒットしない。言ってRX用gccについてのWebページを見せてくれた。gccがあるならbinutilsもあるはずであり、検索するならobjdumpではなくbinutilsで検索すべきだった。rx"等のキーワードで検索をして、このページに行き着いた。アーキテクチャ欄に"elf32-rx-be"等があるので使えるはず。0x650c0815)"reneキーワードは番組の中で。2222/tcpでサーバが動作しています。パーツを集めて正解文字列を特定してください。答えは正解文字列のsha1ハッシュ値です。いう様な挙動を示した。送られてくる数字は以下の6つの数字のいずれかで接続毎(1秒毎?)に不規則に変わっていた。54721数字の規則性などを見出そうとしばらく悩んだ後、この問題のジャンルがネットワークである事からこれらの数字はポート番号ではないかと気付いた。通信が停止している最中にncでそのポートに接続してみた所、文字が1文字だけ送られてきて通信が切れた。ポート番号毎に送られてくる文字は決まっていて、以下のように対応していた。3333/tcpでサーバが動作しています。パーツを集めて答えを見つけてください。今回はたぶん人力では無理です、かしこ。ポート番号を送ってくる接続がすぐ切れる点と、送られてきたポート番号で接続しに行った時に降ってくるデータがやたらデカい点が違っていた。3333/tcpにポート番号を聞きに行って各ポートからの受信データを全てつなぎ合わせて保存するPythonスクリプトを適当に書いた。sashimi-umai反省とか4時間の短期決戦だったので、ピンと来ない問題を避けて解ける問題に集中した。正しい選択だったと思う。here"が解けなかったのが残念。目grep"的な問題かと思っていたがWriteupを読んで納得した。解けなかったがチームメイトが頑張ってくれていた。参加者の皆さん、今回のCTFを企画して下さったSECCON実行委員会の皆さんお疲れ様でした。ありがとうございました。(メール対応お手数おかけしました。シハハモンシモンチュフドアルキゾニューツマワニヤヘスアキヨ解答FFXのアルベド語。Wikipedia)翻訳すると以下の文章となる。ななよんによんきゅうぼかくしごりゅーむはありませぬかしこAxfcの2742495をkeyfileとして、同梱のQUEST_EX1をTrueCryptでマウント。2問目0バイトのtxtと真っ白pngが入ったFATなディスクがマウントされる。iesys_src.7zを格納した記憶媒体を、私の友達の裕(ゆたか)くんに預けました。江ノ島に住む地域ネコです。(私が名前をつけました。)ゆたかくんをさがしてください。写真4枚が同梱されている。内1枚に1月4日の神奈川新聞が写っている。Qualsに参加しました。ペネトレテスターの辻さんもblogで同じ問題のwriteupを書かれていますが、僕は少し違う解法で解きました。スクリーンショットとか色々取るのを失念していたので、その辺は辻さんのblogを参照してください。codeの3つでした。支店検索フォームにシングルクオートを入力したらSQLのエラーメッセージが表示されたので、ここから攻める事にします。テーブル名を列挙しました。辻さんはinformation_schemaを使っていますが、僕は確かpg_databaseテーブルからdatnameを引っ張って来ました。pg_database列挙されたテーブル一覧を眺めるとaccountというテーブルがありました。