20 Jul 2016, 00:57

C90参加のお知らせ

C90(2016年夏コミ)当選してました。スペースは 3日目 東ム-43b です。C89に引き続き、”urandom vol.2”を出します。内容は引き続いてないです。

urandom vol.2はこんな感じの内容になります。

  • バイナリの調べ方 (by op)
  • Mental Game! (by yyu)

この内容で入稿を完了しています。後ほどサンプルをアップロードします。


  • (2016-07-20 修正)
    • 諸般の事情により『.NET難読化ツール事始め』(fetastein)に代わって、『Mental Game!』(yyu)となりました
    • 入稿完了したよ!!!!

15 Mar 2016, 01:42

Sunshine CTF 2016 Write-up

2016-03-13 01:00 - 2016-03-14 05:00 (JST)に開催されたSunshine CTF 2016のwrite-upです。

なお、今回は以下のメンバー編成で参加しました。

  • mayth (土曜日を寝て潰す担当)
  • op (たまに現れていくらかの助言と違法語句を残して去って行く担当)

ESTはクソ。

Forensics 50: Butterfly Effect

butterfly.pngが与えられる。

ImgSteganoにファイルを読み込ませて”Image > Enhanced LSB”とするとフラグが現れた。

sun{RE4DY_THE_4CID_M4GNET!}

Exploitation 50: alligatorsim95

Don’t try to automate adding X eggs at a time

legends circulate in florida of an alligator that had laid millions of eggs. use this simulator to try to achieve the same greatness

※プログラムは与えられない。

指定されたIPアドレス/ポートにncで接続すると、アリゲーターのAAと共に文章が流れてくる。

-> u r... AN ALLIGATOR!!
.. simulating alligator lifecycle ..
.. simulating alligator throwing physics..
-> you got 1337 eggz in ur nest, how many you gonna lay alligator??

この後に整数値を入力すると、その数だけ卵の数(上記の通り初期値1337)が増える。ただし上限は50。それを超えると拒否され再度同様のプロンプトが現れる。接続を切られるのは以下の通り。

  • echoとかで入力を機械的に流し込もうとしたとき (“Don’t try to automate adding X eggs at a time”)
  • 0や数字として解釈出来ない数を与えたとき
  • 一定時間が経過したとき

この条件下で卵の数を大きくする問題。

色々入力を試すと、0はダメだが負数を受け付けること、また、負数であれば絶対値がいくら大きくてもよいことがわかった。 これを利用すると整数オーバーフローを引き起こすことができる。そうすると卵の数は非常に大きな値となり、フラグを得ることができる。

-> u r... AN ALLIGATOR!!
.. simulating alligator lifecycle ..
.. simulating alligator throwing physics..
-> you got 1337 eggz in ur nest, how many you gonna lay alligator?? -2147483647
~~ producing eggz ~~
.. simulating alligator lifecycle ..
.. simulating alligator throwing physics..
-> you got -2147482310 eggz in ur nest, how many you gonna lay alligator?? -10
~~ producing eggz ~~
.. simulating alligator lifecycle ..
.. simulating alligator throwing physics..
-> you got -2147482320 eggz in ur nest, how many you gonna lay alligator?? -40000
~~ producing eggz ~~
-> dang 2147444976 is a lotta eggs
-> as a god among gators here is ur crown:
sun{int_0verflow_i5_a_g0od_st4rt}

sun{int_0verflow_i5_a_g0od_st4rt}

Exploitation 55: Dance

Some prefer the stanky leg, others prefer the dab, but what dance moves do you have?

IPアドレスとポート番号が指定される。当初プログラムは与えられなかったが、後にフラグ部分を潰したバイナリが配布された。

サーバーに接続すると以下のような文字が流れてくる。

welcome to the pro club. you just paid a door fee and have no respect. earn ur cred on the dancefloor!
give us ur sick dance moves like so:
whip,naenae,whip,whip,naenae<ENTER>

whipnaenaeをカンマ区切りで並べて送信すると

do the naenae
(\)
  \(:O)
   /||\_
_/¯    ¯\_

こんな感じで対応したアクションと愉快なAAが流れてくる。

当初何をさせたいのかさっぱりわからなかったが、バイナリが配布されたのでそれを読んだ。

その結果、こちらからの入力を受け取るバッファについて、memsetで80bytesをNULLで初期化しているにも関わらず、fgetsで最大89bytesまで読み込むようになっていることがわかった。また、0で初期化された特定の変数の値が書き換わっているときにフラグが表示されるようになっていることがわかった。

入力の読み込みはだいたい次のようなロジックになっている。

while (strlen(buf) > 0) {
  if (*buf == 'n') {
    buf += 7;
    donaenae();
  } else if (*buf == 'w') {
    buf += 5;
    dowhip();
  }
}
check_flag();

先頭しか見てないっぽいので適当に80文字の”n”を送り付けたところ、フラグが得られた。

% ruby -e 'puts "n" * 0x50' | nc ****
welcome to the pro club. you just paid a door fee and have no respect. earn ur cred on the dancefloor!
give us ur sick dance moves like so:
whip,naenae,whip,whip,naenae<ENTER>
do the naenae
(\)
  \(:O)
   /||\_
_/¯    ¯\_
(snip)
do the naenae
(\)
  \(:O)
   /||\_
_/¯    ¯\_
girl u can dance w the best of em. the pw to our vip lounge is: sun{d4nc3_0n_th3_s7ack}

cool dance! come again!

sun{d4nc3_0n_th3_s7ack}

Misc 50: Find Floridaman

In other news… Floridaman did what with an alligator?

Remember, this has the normal flag format.

Hint: You need only look at comments from Florida-based news websites.

Hint: Gator went threw a window!

Hint: “Flori-duh”

NOTE: Flag was posted before the 12th

フロリダマンを探すマン。

問題オープン当初は最初の2文だけだったのが、誰も解かないからか次々にヒントが追加されて結局ヒントが3つになった。

ヒントが3つになってから、そのヒントを元に”Flori-duh Alligator”で探してみると、次の記事が見つかった。

Wendy’s alligator-thrower is only fulfilling his Flori-duh destiny

この記事のReader Commentsにフラグがある。

Summerc137 3 days ago May the Lord have mercy on this man. That poor woman in the drivethrough! sun{1s_th1s_even_real_l1fe?}

sun{1s_th1s_even_real_l1fe?}

ちなみにこの事件、なんでも1mちょっとあるアリゲーターをWendy’sのドライブスルーの窓から投げ込んだのだそうな。さすがアメリカ。

21 Feb 2016, 17:42

urandom vol.1 電子書籍版リリース

大変長らくお待たせしました。urandom vol.1の電子書籍版をリリースしました。電子書籍版は256円での販売です。内容は物理書籍版と同一です。

販売ページはこちらです(Gumroadに移動します)。決済にはクレジットカードかPayPalが使えます。

物理書籍を購入した方へ

購入ページに”Offer code”という欄がありますので、そちらに物理書籍挟み込みの紙に記載されたコードを入力してください。

  • コードを使用する場合、クレジットカード情報は不要です(正しいコードを入力すると入力欄が非表示になります)。
  • 同一コードは10回まで使用可能です。ダウンロードしたデータを紛失した際は同一コードを入力してください。

29 Dec 2015, 20:23

C89本にIDA Pythonの記事を書いた

先の記事で述べている通り、CTFチームurandomとしてコミックマーケット89で同人誌「urandom vol.1」を頒布します(入稿間に合った)。

その同人誌にIDA Pythonの記事を書きました。タイトルは「Easy Recipes for IDA Python」。本全体で三章構成になっている内の一章です。 内容は、タイトルの通りIDA Pythonのための簡単レシピ的なものになっています。 IDAによる解析作業中に起こりそうな問題ケースを3つ挙げ、それらを解決する比較的簡単なIDA Pythonスクリプトの例とその解説を書いています。

こんなん。

Easy Recipes for IDA Python

C89 3日目(15/12/31) 東ホ-05b 500円です。 2016年2月以降に電子書籍化する予定(詳細未定)ですが、物理本の購入者には電子書籍版を無料で提供します。

urandom vol.1 表紙

29 Dec 2015, 16:01

[C89] デコンパイラを殺すIL

いよいよ明日がコミケ初日ですよ!

むっちゃドキドキしてきた…。

コミケ戦士の皆さん、今日くらいは自慰は休んで明日に備えますよね?

というわけでこんにちは、maythです。opが記事説明上げてたので、コミケ初日の今日に至って私もなんか書いておこうかと思います。

今回は デコンパイラを殺すIL という記事を書いています。殺すといってもSEGVさせるとかではなく、デコンパイルを失敗させるというお話です。

元々は『SECCON 2015 x CEDEC CHALLENGE ゲームクラッキング&チートチャレンジ』の発表で触れた内容です(発表資料はSECCON 2015の当該記事にあります)。当日は時間が限られており、チート対策としてのデコンパイル妨害については簡単なサンプルを示すだけにとどめました。その辺りを突っ込んで書いています。

デコンパイル妨害の指南書というよりかは、調査報告といった感じになっています。実際、本記事の流れはtkbctf2のSkill Analyzerを作るにあたって調査した分に、横浜大会で資料を作る際に再調査した分を付け加えつつ、当時の私の思考と実験をトレースしたような構成としました。

.NET周りのエンジニアの方にチラッと読んでもらいたい感じの記事です。最近はUnityでMonoを使う機会も増えているかと思います。

3日目(31日 木曜日)、スペースは 東ホ-05b “urandom” 、頒布価格は500円です。

それでは、当日スペースにてお待ちしております。

note: なお、記事に関するツッコミ等は適宜ブログ記事上げてもらうなり、@maytheplicまでTwitterでリプを飛ばすなりしていただければ。

16 Dec 2015, 00:41

C89情報 - 予告編

maythです。無事に(?)本が出来つつあります(出来たとは言っていない)。世間ではスターのウォーズのなんかの公開が間近に迫っていますが、我々に迫っているのは締め切りとクソコードです。

“urandom vol.1”は記事3本でお送りします。記事の著者から内容について簡単なひとことを要求したところ1名ドロップしました。とりあえずこんな内容になります。

  • Easy Recipes for IDA Python (by op)
    • IDA Pythonの為の簡単なレシピを解説します。
  • デコンパイラを殺すIL (by mayth)
    • .NETアプリのデコンパイルを失敗させるべく、我々調査隊はILの奥地へと飛んだ。
  • 秘密計算入門 (by yyu)

(2015-12-25 追記)

すっかり告知を忘れていましたが入稿を完了しています。 こんな感じの表紙です。 見事に華がないですね。 当日はスペースに何か目印っぽいものを張っておこうと思ったのですが未だ未完成です。 とりあえずスペース番号がわかりやすい何かを置いておきます、たぶん。

改めて参加日とスペースの告知ですが、3日目(木曜日) 東ホ-05b です。 執筆者でさえ忘れていてWebカタログの地図で自分のサークルを見失いました。

urandom vol.1 表紙

なお、頒布価格は500円を予定しています。消費税はありませんので、本当に500円だけ握りしめて来て頂ければと思います。

当日誰が売り子やるのかもさっぱり定まっていませんが、スペースでお待ちしております。それでは。


(2015-12-27 追記)

この同人誌は2016年2月以降に電子書籍化する予定(詳細未定)です。物理本の購入者には電子書籍版を無料で提供します。

04 Nov 2015, 05:21

C89情報

C89当選しました。スペースは 3日目 東ホ-05b です。

以前の告知通りの本が出ます。

  • 一歩差がつくIDAコーデ (by op)
  • デコンパイラを殺すIL (by mayth)
  • 他、予定は未定

未だ目次が決まらないあたりに危機感を覚えつつ鋭意執筆中です。

詳細が決まり次第こちらの記事をアップデートします。Twitterではだいたい私が告知しますが、普段のノイズが多いのでいい感じにウォッチしてください。

ちょっと気が早いですが当日皆さんにお会いできるのを楽しみにしています。それでは。

29 Aug 2015, 01:16

C89申し込みました

C89 サークルカット

C89に”urandom”で申し込んでいます。

『コンピュータセキュリティ総合誌』と称したよろず本、”urandom vol.1”を頒布予定です。サークルカットにある通り、現時点ではこんな内容です。

  • デコンパイラを殺すIL
  • 一歩差がつくIDAコーデ

デコンパイラを殺すILはSECCON 2015 x CEDEC CHALLENGE ゲームクラッキング&チートチャレンジの発表で触れられていた内容です。

落ちたら落ちたでそのとき考えます。

28 Aug 2015, 19:40

About us

urandom は筑波大学の学生(とその卒業生)で構成されたCTFチームです。