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

撤退

参加報告を記します.

katagaitai関東easy行った

午前中はTMCTFをやってたので記憶が…

revしたあとにどう解くかという話で、kleeとz3の話が聞けたのはとてもよかったです。

あと、SANSには行けず。

katagaitai #5 関東med

5周年おめでとうございます!次も行きます!

通信部分のコードはソルバを参考にしました。

続きを読む

SublimeCoccigrep を作った

SublimeCoccigrep を作った

coccigrep をインストールしてみたら、Vimemacs上で使う方法が載っていたがSublime Text用はなかったので作った。

github.com

普段はpython2を書いているので、sublime api の create_output_panel周りとpython3のバイト列、文字列周りで若干戸惑って時間が掛かってしまった。

ITエンジニアのための機械学習理論入門を読んだ

ITエンジニアのための機械学習理論入門を読んだ

ITエンジニアのための機械学習理論入門

ITエンジニアのための機械学習理論入門

結構前に読んだ...

ちょうどKaggleの勉強会の前に読んだから,トレーニングセット,テストセット,オーバーフィッティングみたいな機械学習のための基本的な単語の意味とか なぜオーバーフィッティングがダメかというような初歩が分かりやすく書いてあったので勉強会の内容も分からないなりに理解の助けになった.

最近だととりあえず使ってみようと思ってChainerのptbサンプルで友人のツイートをRNNLMで学習してツイートするbotを作ってみたけど,なかなか特徴をとらえていて面白い. サンプルをぶん回しただけで内容を深く理解しているわけではないからただの娯楽になってるけど…

tcsetpgrpの云々の話

フォアグラウンドプロセスグループの設定云々

ソースコード

上記のコードをOSX Yosemiteubuntu, CentOS 6で動かした.

実行結果

OSX

tcsetpgrp: Invalid argument
pgid: 1367
USER       PID  PPID  PGID   SESS JOBC STAT   TT       TIME COMMAND
surusuto  1367   309  1367      0    1 S+   s000    0:00.00 ./a.out
root      1368  1367  1367      0    1 R+   s000    0:00.00 ps -aj

tcsetpgrpに失敗していると分かる.

Ubuntu

pgid: 27015
   PID   PGID    SID TTY          TIME CMD
 27014  27014   2840 pts/8    00:00:00 a.out
 27015  27014   2840 pts/8    00:00:00 ps

tcsetpgrpに成功していて,存在していないpgidがフォアグラウンドプロセスグループIDになっている.

CentOSでも存在していないpgidがフォアグラウンドプロセスグループIDになっていた.

どうしてこうなった

シェルをUbuntu上で書いていて試しにOSXで動かしてみるとtcsetpgrpに失敗するので,色々試してみたところ,OSXLinuxで存在しないプロセスグループIDをtcsetpgrpで指定したときの挙動が違うことが分かった.

よくよくコードを見返してみるとsetpgidの前にtcsetpgrpをしていて,そのために存在しないプロセスグループIDがtcsetpgrpされていたのでOSXでは正しく動かなかったとわかったという話.

シグ松さん

僕の推し松は今回の話にちなんでSIGTTOU松!シェルを書くと必ず出てくるよね (詳しくはSoftwareDesign4月号参照)

SECOON ONLINE 2015 Write up

SECOON ONLINE 2015 Write up

marimariで参加したよ(1100pt, 165)

解いた問題

Start SECCON CTF

SECCON WARS

aviutlで動画を全部画像にしたあと, それで出力はこんな感じで,手直しして終わり. f:id:turn_up:20151207120823j:plain

Unzip the file

pkcrackを使おう. 最初にbacknumber08を2014年のを持ってきてうまくいかなかった.

~/Downloads/pkcrack-1.2.2/src/pkcrack -C unzip.zip -c backnumber08.txt 
-p backnumber08.txt -P backnumber08.zip -d d.zip

Connect the server

wget login.pwn.seccon.jp:10000

ncでつなぐとバックスペースで消されるらしくなるほどと言った.

Command-Line Quiz

先頭を出力するのは,head 末尾を出力するのは,tail 出力を絞るのは,grep 操作するのは,awk 最後は色々探してsed

Decrypt it

$ ./cryptooo SECCON{*************************}

ではじめのwaUqjjDGnまでは一致したので,全体で暗号化しているわけではないと判断して,2文字ずつくらいを*から書き換えるのを試して復号していった.

Steganography 3

なにも思いつかなかったので,頑張ってelfをバイナリエディタで書いて実行したら,

Rmxvb2QgZmlsbA0KMre

これをbase64デコードすると

Flood fill

となってペイントで塗りつぶせば良いことが分かる. いとかなし

惜しかったやつ

Fragment2

HTTP2だとわかって(チームメンバから聞いて)SECCONのハフマン符号化したやつ(dd82)があるだろうと思って探してみたところ見つからなかった.(謎 終わった後やってみたら普通に見つかった

Entry form

普通に.bakを見つけてOSコマンドインジェクションだと分かるもなぜかうまく行かなかった

終わり

体力が尽きてケアレスミスが多かったのでもうちょい始まる前に寝ておけばよかった…

CTF for starter 行った

CTF for starter 行った

情報セキュリティ大学院大学行きやすくて良き.

概要

CTFの魅力やセキュリティ倫理的な部分を説明した後,問題を4問(通信解析2個,Web1個,バイナリ1個)くらい解いた.

通信解析

一個目は見るだけ.二個目はbasic認証(見るだけ)

Web

ソースみたり,引数変えたり,上位階層を見たりするだけ.

バイナリ

stringsかけて終わり.

感想

プロお断りとあるように,CTFやったことある人だとすぐ解けるような問題だったと思いました.

CTFやったことないけどセキュリティには興味あるみたいな友人を連れて行ったら,わからんわからんうねってたけど,Webはすらすら解けてたし(Wiresharkの使い方やバイナリのとっつきかたには苦戦してた)starterという名前の通り,初心者の最初の一歩としてとても良いイベントだと感じました.

バイナリに関しては自分もかなり初心者だと思っているからどうかなと思ったけど,stringsコマンド一つで終わってしまったので,そこは残念ちゃ残念でしたね.

Wiresharkの使い方を説明するとそこが全部答えになっちゃうから説明しなかったというお話もあって,確かにそうだなーって思ってました.

ひとしきり考えてみたけど,やはり普通にインターネットにアクセスしてそのパケットをキャプチャして,こんな感じでpostリクエストを送ったからこういう流れになって,こういう風に表示された. みたいなデモをすると結構いけるかも!って思ったけど,ある程度ネットワークの仕組みの基礎部分を知らないと通じないなーとも思いました.やはり難しい…

スタッフの対応も親切でしたし,一緒に行った友人も楽しめていたのですごく良かったです. このような会を開催いただき,運営の皆様ありがとうございました.