かわろぐ

技術、ボルダリング、セキュリティ、その他もろもろ

MENU

ボルダリングで課題の作者の意図を感じること

3級くらいの課題ををコンスタントにクリアできると、作者が何を考えてその課題を作ったか、どのムーブをさせたくて課題を作ったかというのがわかるようになってきます。なぜ課題の作者の意図を感じるほうが良いのかまとめました。

意図がわかると面白い

課題の意図、やらせたいムーブがわかれば、よっぽど強度の高い課題でなければ登れるはずですので楽しいですよね。完登した時の爽快感は格別ですし。

この課題をつくった人はここでこういうムーブをさせたかったんだな。とか、あ、適当に作ったなとか。この人はピンチが異常に強いなとか。

同じ作者の課題とわかるようになる

最近偶然、同じ方が作った課題を複数のジムで登る機会がありました。

同じ人が作ったというのは、後から知ったのですが、やらせたいムーブとか、いやらしい核心が非常によく似ていて、この人このムーブ好きだなぁー。あのジムのあの課題と非常によく似ているけど、同じ人が作ったのか?… と登れず打ちひしがれてましたw

課題づくりにも役立つ

いろんな人が作った課題(ファイル課題)を登って意図やムーブを理解すれば、自分の中にレパートリー増やすことが出来るので、課題づくりにも当然役立ちます。

みんなでワイワイ登っている時に、みんなのグレードに合わせた課題をその場で作れるとより楽しめますよね。

楽しい、面白い課題を作るために今日もいろいろな課題を触ろうっと。

VisualStudioCode の Vim プラグインでクリップボードにヤンク出来るようにする

環境

  • mac OSX 10.12.3
  • VisualStudio Code 1.11.2
  • vscodevim.vim 

f:id:kawa_xxx:20170422235015p:plain

クリップボードにヤンク出来るようにする

VisualStudioCode に Vim のエミュレートプラグインを入れると、初期状態ではヤンクすると OS 側のクリップボードへ内容が送られません。通常どおり ⌘ + c すればクリップボードに入りますが、せっかく Vim なんだから…

ということで、調べてみると設定を一行追加するだけで共有されるようになるみたいです。

VisualStudioCode のメニューの設定もしくは、⌘ + , で settings.json を表示し、以下の一行を追加することでヤンク時に自動的にクリップボードにコピーされるようになります。VisualStudioCode で Vim プラグインを使うなら本家 Vim 同様、必須の設定ですね。

"vim.useSystemClipboard": true

参考文献

 https://github.com/VSCodeVim/Vim  http://tc.hatenablog.com/entry/2016/11/29/225724

pyenv で python インストール時に Missing the zlib? エラーの解決方法

環境

  • mac OSX 10.12.3
  • pyenv 1.0.10

python インストールでエラー

pyenv を使って python 2.7.13 をインストールしようとしたときにエラーが発生しました。 以下の出力の ERROR: The Python zlib extension was not compiled. Missing the zlib? の部分ですね。

% pyenv install 2.7.13
Downloading Python-2.7.13.tar.xz...
-> https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tar.xz
Installing Python-2.7.13...
ERROR: The Python zlib extension was not compiled. Missing the zlib?

Please consult to the Wiki page to fix the problem.
https://github.com/pyenv/pyenv/wiki/Common-build-problems


BUILD FAILED (OS X 10.12.3 using python-build 20160602)

Inspect or clean up the working tree at /var/folders/x6/bgrznvl10djdrz2f3xf1g1jh0000gn/T/python-build.20170416085400.92263
Results logged to /var/folders/x6/bgrznvl10djdrz2f3xf1g1jh0000gn/T/python-build.20170416085400.92263.log

Last 10 log lines:
rm -f /Users/kawa_xxx/.pyenv/versions/2.7.13/share/man/man1/python.1
(cd /Users/kawa_xxx/.pyenv/versions/2.7.13/share/man/man1; ln -s python2.1 python.1)
if test "xno" != "xno"  ; then \
          case no in \
               upgrade) ensurepip="--upgrade" ;; \
               install|*) ensurepip="" ;; \
          esac; \
           ./python.exe -E -m ensurepip \
               $ensurepip --root=/ ; \
     fi

解決方法

公式Wikiにあるように、すでに XCode がインストールされている場合は、

CFLAGS="-I$(xcrun --show-sdk-path)/usr/include" pyenv install -v 2.7.13

としてインストールすればエラーを回避できます。根本的な解決策としては、XCode のコマンドラインツールの再インストールをする必要があるようです。 そういえば、Macを10.12 にしてからXCode何もいじっていなかったような…

xcode-select —install

Macって意外と環境を正常に維持するのが大変だなぁ…

参考文献

https://github.com/pyenv/pyenv/wiki/Common-build-problems

Mac で Python のナウい環境構築方法

C# で書いていたプログラムをPythonの勉強がてら書き直したくてまずは環境を作りました。その時のメモをまとめておきます。 3系の Python を使いたかったのですが、2系も使いたい事があるしということで、 pyenv と virtualenv, anaconda を使いどちらも使えるようにしました。

環境

  • Mac OSX 10.12.3
  • pyenv 1.0.7

Pythonをインストールする

Mac はデフォルトで Python がインストールされていますが、2系です。3系を使いたいので、 pyenv, virtualenv をインストールして共存出来るようにしていきます。

$ brew install pyenv
$ brew install pyenv-virtualenv

上記二つのインストールが終わったら、シェルの設定ファイルに以下を追記します。

PYENV_ROOT=~/.pyenv
export PATH=$PATH:$PYENV_ROOT/bin
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

anaconda という、主要なライブラリが全部入っているディストリビューションをインストールしていきます。2系はMacに最初から入っていますが、念のため入れておきます。

このインストールは完了まで結構時間がかかるので気長に待ちましょう。

3系
$ pyenv install anaconda3-4.2.0

2系
$ pyenv install anaconda-2.4.0

使用バージョンを切り替える

# 現在インストールされているバージョンを確認する
$ pyenv versions
# anaconda3-4.2.0 を使う様に設定する
$ pyenv global anaconda3-4.2.0

HelloWorldしてみる

python のコマンドオプションで実行してみます。

$ python -c "print('hello world’)”
hello world

これで Python の環境構築は完了です。

参考文献

http://qiita.com/y__sama/items/5b62d31cb7e6ed50f02c

みんなのPython 第4版

みんなのPython 第4版

WhiteHat Wargame Challenge 02 Web001 Write Up

3/25 11:00 ~ 19:00 (JST)の期間に開催された WhiteHat Wargame Challenge 02 の Write Up です。

このCTFはクイズ形式のCTFで、レベルは入門者でも少し頑張れば解ける、比較的簡単な方でした。

他にも For001 , For002 もWriteUp書いていますので合わせてどうぞ。

Web001 WriteUp

今回は、Web001のWriteUpです。この問題はWeb系の問題でした。問題文は以下の通り。

Have you ever code JavaScript? Find flag in Website: web01.wargame.whitehat.vn.

Submit WhiteHat{sha1(flag)}
Example: flag = Hello World
sha1("Hello World") = 0a4d55a8d778e5022fab701977c5d840bbc486d0
You must submit: WhiteHat{0a4d55a8d778e5022fab701977c5d840bbc486d0}
(all hash charactera in lowercase)

問題文を訳すと、あなたはJavascriptを書いた事がありますか?フラグはこのWebサイトの中にあるよ。でしょうか。 2行目以降はすべての問題に共通して付いている、フラグの作り方ですね。

Webサイトを確認する

まずは問題文で与えられたURLへアクセスしてみます。すると、以下の画像の様な画面が表示されました。

f:id:kawa_xxx:20170326100048p:plain

Click me と書いてあるボタンがあるので、クリックしてみると、以下の画像の様に “This is a javascript challenge” と書かれたダイアログボックスが表示されました。

f:id:kawa_xxx:20170326100056p:plain

Javascriptならとりあえずディベロッパーツールで見てみようということで、 hello.js ファイルを見てみるとバイト列で何やら大量の文字列があるようです。

f:id:kawa_xxx:20170326100059p:plain

4行目にブレークポイントを貼って、 showFlagの中身をみてみると 何かを処理してそうなJavascriptのコードが更に出てきました。 が、よくよくみると下から4行目のif文の中にバイト列と変換が入った状態でパスワードがまんま入っています。 痕はこれをコンソールに渡してあげて、パスワードでした。

f:id:kawa_xxx:20170326100050p:plain

フラグを作る

問題文にもあるようにFlagはパスワードを sha1 でハッシュ化して更に WhiteHat{} でくくるというちょっとめんどくさい仕様になっています。

パスワードは youaregod~~~~~~~! なのでこれを sha1 でハッシュ化すると 1c0e74d5f61b6c3901a277bdd490ad070265f027 なので、フラグは WhiteHat{1c0e74d5f61b6c3901a277bdd490ad070265f027} でした。

めでたしめでたし。

おわりに

今回の WhiteHat Wargame Challenge 02 は比較的簡単なCTFだったので競技時間内に3問も解けましたが、Defconなどもっとレベルの高いCTFでも競技時間内に1問でも解けるようになりたいです。精進します。

サイバーセキュリティプログラミング ―Pythonで学ぶハッカーの思考

サイバーセキュリティプログラミング ―Pythonで学ぶハッカーの思考

  • 作者: Justin Seitz,青木一史,新井悠,一瀬小夜,岩村誠,川古谷裕平,星澤裕二
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2015/10/24
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログ (10件) を見る