TDU CTF 2014 Satellite in ConoHaに参加して来ました
今まで電機大限定で開催されていたTDUCTFですが、今回は外部の会場での開催だったので折角だからと参加して来ました。(毎回参加している気もしなくもないですが…)
結果は下から数えて20番ぐらいとプロの初心者として申し分のない結果を得ましたが、あの問題を解けた時の何とも言えない高揚感と、競技を終えた後のネタばらしを聞いた時の悔しさがまた楽しくて、Write upを書かなければ運営の方々に申し訳が立たない気さえするので書きます。
Web
Easy SQLi
問題文の通りSQLインジェクション攻撃の問題でした。
まずは練習問題と同じような文を試してみましたが、思ったような結果が得られずにびっくりしつつ、シングルコーテーションをダブルコーテーションに変えた所3つ程結果が現れました。
が、そこにはフラグが出ておらず、文の後をコメントアウトした所Flagが得られました。
1" OR "1" = "1" ;--
(上の文はうる覚えなので間違っているかも)
この問題には複数のフラグがあるそうですが、すぐに別の問題に取り掛かったので挑戦しませんでした。
SUPER ULTIMATE COOL SECURE NOTING SYSTEM
(たまたまブラウザにタブが残っていたので問題名を思い出せました。)
メモ書きが出来るサイト(?)からフラグを探す問題でした。
ページの下に管理者用のリンクが親切にも設置されていたので開いた所、ユーザー名とパスワードの入力欄が現れ、そこには親切にもSQLインジェクションを書くよう促すpretextがありました。親切。
1' OR '1' = '1
binary
string_compare
実行ファイルstring_compare.exeが置かれていたので、とりあえずstringsを使うと、MinamiKotoriと言ういかにもな文字列とTDU{%s_is_very_cutie}が見つかったので、printf("TDU{%s_is_very_cutie}", s);みたいな事をしているんだろうなぁと考えたところ正解のようでした。
もちろんFlagはTDU{MinamiKotori_is_very_cutie}、親切。
Trip in Kyoto(?)
問題名はうる覚えですが、ラバーストラップがついたカバンの写真が置いてある問題でした。
何も考えずにstringsを実行すると、最後の行にFlagが。
1wordずつ大量のスペースで区切られていたので、手打ちでsubmitしました。
Network
柚子胡椒 vol.1
Bluetoothデバイスの通信をキャプチャしたものからFlagを探すと言う感じの問題でした。
WireSharkで開いて上から眺めているだけでFlagが見つかりました。
misc
Quiz #1
封筒に入れる事が出来たThinkPadはどれかと言う問題でした。
「macbook air thinkpad」みたくググるだけで答えが見つかりました。
ThinkPadは薄くなってもあまり幸せになれそうにないなぁ、と言う感想を抱いた問題でした。
Quiz #2
Mac OS Xのコードネームとバージョンに関する問題でした。
最初はてっきりバージョン番号にあったコードネームを答える問題だと思いましたが、「答えは数字を書いて下さい」とのアナウンスが。
Snow Leopard(うる覚え)のバージョンから.を除いたものをフラグの書式に合わせたものが正解でした。
crypt
我が同胞に告ぐ
前回のTDUCTFに出ていたお陰で解けた問題でした。
スペースをESCキーとしてvimで打ち込むとFlagが現れました。
ここまで
問題を全然思い出せないためここまでにしておきます。 また思い出したら追記します。
clojure.core.matrixの仕様変更について
Clojure for Machine Learning Clojure for Machine Learning | Packt Publishingを読んでいて、躓いたのでメモ。
P23に行列の乗算を行う部分があるが、本に記載通り
(def A [[1 2 3] [4 5 6]])
(def B [[10 20] [20 30] [30 40]])
(pm (M/* A B))
のように*を用いると、以下のエラーが返されます。
RuntimeException Incompatible shapes, cannot broadcast [3 2] to [2 3] clojure.core.matrix.impl.persistent-vector/eval6174/fn--6175 (persistent_vector.clj:156)
ここで躓きまして、販売元のpacktの該当ページからサンプルコードを持ってこようと開いて見ると、ちゃんと注意書きがありました。
In versions of core.matrix greater than 0.10.0, M/* only performs element-wise multiplication.
In core.matrix 0.3.0, M/* can be used to perform both inner product multiplication as well as element-wise multiplication.
どうやら、clojure.core.matrix.operators/*はバージョン0.10.0以降から仕様が大きく変わってしまったみたいですね。
では、かつてのclojure.core.matrix.operators/*はどこに。。。と探していると、clojure.core.matrix/mmulなるものを発見。
(mmul C D)
-> [[140 200] [320 470]]
期待通りの出力が得られました。✌('ω'✌ )
因みに、現状のclojure.core.matrix.operators/*は
(M/* [[1 2] [3 4]] [[2 2] [2 2]])
-> [[2 4] [6 8]]
のように、行列の同じ場所にある要素同士を乗算する実装になっているようです。
VimでClojureする時のあれこれ
この記事は Vim Advent Calendar 2012 224日目の記事になります. 223日目はleafcageさんの"uptodate.vimでもっとお手軽にオレオレライブラリ"でした。
今回はLisp リローデット(要出展)と呼ばれているあの言語をVimでも書いちゃおうと言う記事です。
何となく、Lispと言えば名前を言えないあのエディタの事ばかり頭に浮かびますが、Vimでも快適に書けるよ!いやむしろVimなんだよ!なんて事が分かって貰えればと思います.
vim-fireplace
Clojureのvimプラグインと言えばVimClojureが良く取り上げられるのですが,より便利なプラグインがあります.
そう,vim-fireplaceです!
vim-fireplaceを使う事で,どのようにVimでClojureを楽に書いていくかについて書いて行きましょう.
使用準備
vim-fireplaceは,ClojureのnREPLに接続して使用します.
Leiningenが必要なのでご注意.
他のプラグインと同じ様に,NeoBundle等でインストールすればOKです.
NeoBundleが導入済みであれば以下の行を.vimrcに追加して下さい.
NeoBundle 'tpope/vim-fireplace'
おっと,インストールも忘れない様に気をつけて下さい.
以下のコマンドを実行します.
:NeoBundleInstall
これでvim-fireplaceを使う準備が出来ました!
使い方
前項に書きましたが,このプラグインはClojureのnREPLに接続して使用するものなので,leiningenと併用するのが基本的な使い方になります.
そのためテストしたいプロジェクト内でnREPLを立ち上げる必要があります.
まず,以下の通りにプロジェクトを作ってみます.
lein new test
プロジェクト内に移動し,leinコマンドのreplからnREPLを立ち上げます.
cd test
lein repl
nREPLを立ち上げるには,xterm等のターミナルエミュレータからでも勿論OKですが,VimShellでも問題ないです.
ここまで来れば,vim-fireplaceはVimShell等で立ち上げられたnREPLを見つけ,既にいつでも接続出来る様になっています. vimが拡張子.cljのファイルを開いている限り,vim-fireplaceを使う事が出来るでしょう.
早速,一番オーソドックスなvim-fireplaceのコマンドを試してみます.
:%Eval
:%Evalはバッファのコード全体をnREPLに渡し,評価してくれます.
直ぐに結果がバッファ下に現れてくれるので,とっても頼りになるコマンドです.
以下の様に%を抜きにする事でカーソルがある段落のみ評価されます.
:Eval
これまで実行して来たコードを履歴から再度実行する事もできます.
cqq
vimのバッファを利用して,コードを直接入力して評価させる事もできます.
cqc
以上のコマンド以外にも,vim-fireplaceには様々な使い道がありますが,私が良く使うものはざっとこれぐらいなので,紹介はここまでに致します.
実際に使うと分かるかと思いますが,非常に動作が実際実用的なプラグインなので,VimでClojureしたい方に強くお勧めしておきます.
clojureなtwitterbotを作ってみたんです.
どうも,一週間のうちに三,四団体のお仕事を同時並列するのが当たり前になってきたBOXPでございますお久ぶりでございます.
取り敢えずこれを.
Clojureの勉強の一貫でTwitterのbotを作ってみました. 今のところ簡単な返答と,Clojureのコードをevalして返す機能ぐらいしか機能はありませんが,使い方によっては一部の界隈で役に立つ(らしい)ので是非触ってみてくださいね.
例えばですが,
@alicepmaster (do (in-ns 'grimoire.commands) (for [x "俺の想いよルイズへ届け!!ハルゲニアのルイズへ届け"] (post (str "@If_I_were_boxp " x))))
— BOXP (@If_I_were_boxp) 2013, 6月 10
@alicepmaster (do (in-ns 'grimoire.commands) (for [x "爆撃なう"] (post (str "@If_I_were_boxp" x))))
— BOXP (@If_I_were_boxp) 2013, 6月 10
こういう楽しみかたがあるかも.
今日はこれだけです,忙しいんだね仕方ないね♂ 先輩から買ったRaspberry Pi何に使おうかしら.
archlinux 12.01版インストール記録
どうもしばらくぶりです、BOXPです。
一万二千円程で売られているThinkpad x200sを某所で発見、買ってしまったので例のごとくarchlinuxをインストールしました。 これでarchlinuxのパソコンが三台になります、なんだこれ。(本当はChrome OS専用機として使用する予定だったのですが、ドライバの互換性が悪いのか使用途中に頻繁に画面が点灯、消灯を繰り返し、泣く泣く諦めました。)
ちなみにパッケージの互換性とか一切考えずにパッケージをインストールしている箇所もあるので、ここにあるコマンドをそのまま打ち込めばインストール出来る、と言うような事は一切ないのでご注意ください。
-----ここからArchlinux-----
取り合えずインストールCDをブートする
ブートしたらすかさずキーマップをjp106に設定
# loadkeys jp106
ネットに繋がないとインストール作業は出来ないので、ネットに繋ぐ。 今回は無線LANに繋ぐので、wifi-menuコマンドで接続したいAPを選択、設定。
# wifi-menu
ちゃんとネットに繋がっているか確認する
# ping www.google.jp
パッケージをダウンロードするサーバーを選択する これをやらないと作業時間が三倍近く増えることになる やり方は使いたいサーバーの文字列を一番上に持ってくればOK
# nano /etc/pacman.d/mirrorlist
パーティションを作成する 今回はbootパーティションに128MB,swapに4GB,残りをルートパーティションにする
# cfdisk /dev/sda
ファイルシステムを作る
# mkfs.ext3 /dev/sda1
# mkswap /dev/sda2
# mkfs.ext3 /dev/sda3
作ったパーティションを/mntにマウントする
# mount /dev/sda3 /mnt
# mkdir /mnt/boot
# mount /dev/sda1 /mnt/boot
基本パッケージをインストール
# pacstrap /mnt base base-devel
ついでに色々インストール
# pacstrap /mnt vim wireless_tools zsh
fstabを生成
# genfstab -U -p /mnt | sed 's/rw,relatime,data=ordered/defaults,relatime/' >> /mnt/etc/fstab
# vi /mnt/etc/fstab
chroot作業に入る
# arch-chroot /mnt /bin/zsh
コンソール時に使えるエンコーディングを決める エンコーディングとはUTF-8とかSHIFT_JIS的なもの en_US,ja_から始まる列をコメントアウトすればOK
# vim /etc/locale.gen
# locale-gen
デフォルトのエンコーディングを決める # echo LANG=ja_JP.UTF-8 > /etc/locale.conf # export LANG=ja_JP.UTF-8
新しくインストールしたarchlinuxの方のキーマップもjp106に
# loadkeys jp106
fontを変える
# setfont Lat2-Terminus16
fontの設定、キーマップの設定を保存させる
# vim /etc/vconsole.conf
表示する時間の場所を選ぶ
# ln -s /usr/share/zoneinfo/Japan
時間を調節する
# hwclock --systohc --utc
hostnameを設定する
# echo X200s > /etc/hostname
自動でネットに繋がるようにする
# pacman -S dialog
# systemctl enable dhcpcd@eth0.service
# systemctl enable net-auto-wireless.service
pacmanの設定 yaourtコマンドをインストールするため、 [archlinuxfr] Server = http://repo.archlinux.fr/$arch の二行を最後に追加
# vim /etc/pacman.conf
仮想RAMディスクを作成
# mkinitcpio -p linux
パスワードを変更
# passwd
一般ユーザーを追加
# useradd -m -g users -G wheel -s /bih/zsh boxp
# passwd boxp
ブートローダーをインストールする 今回はgrub2を選択
# pacman -Syu grub-bios
# grub-install --target=i386-pc --recheck /dev/sda
# p /usr/share/locale/ja/LC_MESSAGES/grub.mo /boot/grub/locale/ja.mo
# grub-mkconfig -o /boot/grub/grub.cfg
chrootから抜け出してアンマウント、リブート
# exit
# umount /mnt/boot
# umount /mnt
# reboot
再起動とログインが終了したら、色々インストールする。 まずはXwindow
# pacman -S xorg-server xorg-xinit xorg-server-utils
mesa
# pacman -S mesa
wicd
# pacman -S wicd wicd-gtk
# systemctl enable wicd
graphic driver
# lspci | grep VGA
# pacman -S xf86-video-intel
入力機器
# pacman -S xf86-input-synaptics
xmonad + gnome3
# pacman -S yaourt gnome gnome-extra xmonad-contrib
# yaourt -S xmonad-gnome3
xmonad.sessionのRequiredComponentsにgnome-panelを追加する
# vim /usr/share/gnome-session/sessions/xmonad.session
xmonad.desktopを編集
# vim /usr/share/applications/xmonad.desktop
xmonad.hsを作成
$ mkdir ~/.xmonad
$ vim ~/.xmonad/xmonad.hs
xmonad-gnome-session-composite.desktopを作成
# vim /usr/share/xsessions/xmonad-gnome-session-composite.desktop
# vim /usr/sbin/gnome-xmonad-composite
# pacman -S xcompmgr
gdm
# pacman -S gdm
# systemctl enable gdm
ricty
# yaourt -S ttf-ricty
ttf-chromeos
# yaourt -S ttf-chromeos
gnome-tweak-tool
# yaourt -S gnome-tweak-tool
# yaourt -S wget
# yaourt -S chromium-bin
ArchLinuxでGR-SAKURAのローカルビルド環境を構築する
どうもこんばんは、BOXPです。
実はつい最近まで、はてなダイアリーとはてなブログの違いが判らずに放置しておりました。頭が悪いったらない。
まあそれはそうと、訳あってGR-SAKURAを買ってきたので、さっそく環境構築&LEDチカチカをしてみます。
1.コンパイラをインストールする
AURにパッケージがあるので、いつもの通りサクッとyaourt -Sします。
# yaourt -S cross-rx-elf-gcc
だいぶ時間がかかるのでこの間にクラウド開発環境を触ってみると良いかも。
2.インストール失敗
僕の環境では、依存関係にある"cloog-ppl"がないと怒られた。 どうやらx86_64環境の場合はlib32版を使うようPKGBUILDを書き換える必要があるようです(´・ω・`)
とりあえず、"cloog-ppl"を"lib32-cloog-ppl"に書き換えて、さらにバージョンを合わせたらちゃんと動いたのでよしとしました。
3.さくらライブラリのインストール
色々探しましたが、手軽な方法は無いようです^^;
根気と指の力でクラウド開発環境のファイルを全てダウンロードしました。(何故かフォルダのダウンロードが出来ません…仕様?
ひょっとすると公式で配布されているHEW環境用ライブラリから持ってくれば幾分かは楽になるのかも。
まあ公式でmakeでビルド出来るテンプレートを配布してくれれば問題は(ry
4.Lチカ
最後にコンパイル&Lチカ。
GR-SAKURAがマウントされない時は茶色のリセットボタンを押してみて下さい。
$ cd <ライブラリをダウンロードしたフォルダ>
$ make
$ cp sketch.bin <GR-SAKURAがマウントされた場所>
あっさり光りました。 超超シンプル。
それでは、また何か進展があれば書きます(・ω<)