はこのLINUX

LINUX初心者がロボットをつくろうと頑張るような、そうでもないような

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]]

のように、行列の同じ場所にある要素同士を乗算する実装になっているようです。

Twitterクライアント「Grimoire」公開について[Clojure・JavaFx・Twitter4j]

f:id:boxp:20131016151138p:plain

ご挨拶

ご無沙汰しとります,大学生になってからLinux一筋で生きていこうと決めておりましたが,遂にWindowsに折れてしまったBOXPです.Officeの壁は想像以上に厚かったです…

それはさておき,Twitterで私が時々ぼやいておりますが,のんびり作っていた自作のTwitterクライアントがある程度形になって来たので,ここらで一度公開したいと思います.

続きを読む

VimでClojureする時のあれこれ

この記事は Vim Advent Calendar 2012 224日目の記事になります. 223日目はleafcageさんの"uptodate.vimでもっとお手軽にオレオレライブラリ"でした。

今回はLisp リローデット(要出展)と呼ばれているあの言語をVimでも書いちゃおうと言う記事です。

何となく、Lispと言えば名前を言えないあのエディタの事ばかり頭に浮かびますが、Vimでも快適に書けるよ!いやむしろVimなんだよ!なんて事が分かって貰えればと思います.

vim-fireplace

Clojurevimプラグインと言えばVimClojureが良く取り上げられるのですが,より便利なプラグインがあります.

そう,vim-fireplaceです!

vim-fireplaceを使う事で,どのようにVimClojureを楽に書いていくかについて書いて行きましょう.

使用準備

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には様々な使い道がありますが,私が良く使うものはざっとこれぐらいなので,紹介はここまでに致します.

実際に使うと分かるかと思いますが,非常に動作が実際実用的なプラグインなので,VimClojureしたい方に強くお勧めしておきます.

clojureなtwitterbotを作ってみたんです.

どうも,一週間のうちに三,四団体のお仕事を同時並列するのが当たり前になってきたBOXPでございますお久ぶりでございます.

取り敢えずこれを.

Clojureの勉強の一貫でTwitterbotを作ってみました. 今のところ簡単な返答と,Clojureのコードをevalして返す機能ぐらいしか機能はありませんが,使い方によっては一部の界隈で役に立つ(らしい)ので是非触ってみてくださいね.

例えばですが,

こういう楽しみかたがあるかも.

今日はこれだけです,忙しいんだね仕方ないね♂ 先輩から買った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

gnome-xmonad-compositeを作成

# 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

chromium

# yaourt -S wget
# yaourt -S chromium-bin

ArchLinuxでGR-SAKURAのローカルビルド環境を構築する

f:id:boxp:20121116012051j:plain

どうもこんばんは、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がマウントされた場所>

f:id:boxp:20121116012826j:plain

あっさり光りました。 超超シンプル。

それでは、また何か進展があれば書きます(・ω<)