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

Lo-Fi Memories

酒と音楽と技術

TOEIC対策のはしがき

資格

二年前くらいに825点とった。

勉強中に気をつけたとこ、コツのようなものを友人用にメモ。

最近、形式が変わったらしいのでそこまではカバーできてない。

全般

  • 問題集いっぱいやる
  • 時間配分を秒単位で管理する。
  • 問題を捨てる勇気をもつ。

リスニング

コツ

  • Part1の絵見てやるやつは、動作動詞はだいたいフェイクなので選択肢から外す
  • 問題先読みで、選択肢をざっくり理解する。単語だけでもoK
  • 前半の会話聞いて疑問に答えるやつは5W1Hがどれなのかをチェック
  • 前の問題にはもどらない

教材

  • リスニングはESLがよかったんだけど、サービス終了したみたい。似たようなPodcastで毎日聞く。
  • TOEIC公式のEnglish Upgrader

リーディング

コツ

  • 英語を読みすぎたら負け。特に長文問題。
  • 要点だけ読む努力をする。
  • 問題集やりまくって慣れる。
  • テンプレ問題(環境問題・ネットショッピング返品問題・奨学金ほしいよ問題・ホテル・飛行機の予約問題・パーティ招待状問題)などに慣れ、話の展開をエスパーする。結構時間短縮になる。(もはや英語力じゃない)
  • 最後まで解く。絶対解く。何があろうとマークする。ので時間配分が命。

教材

  • 公式問題集
  • TOEIC至上主義の韓国は、TOEIC問題集が沢山ある(=競争が激しく、売れてるやつは問題の質が高い)のでおすすめ。安いし。解説翻訳がゴミだけど。

東京事変の能動的三分間タイマーを作った

作ったヨ。
慣れないProcessingで。

github.com

15曲暗譜つらいかったけど、ライブは楽しかった。
また二週間後も、春合宿でライブ。

WordPressのREST APIにおける脆弱性をDockerを使って検証してみる

技術 PHP wordpress

2017年2月7日にIPAからWordPressにおける脆弱性が発表された。

www.ipa.go.jp

割と簡単にポストを書き換えることができるっぽい。Wordpressってセキュリティホール多そうなイメージあるけど、ここまででかいやつは初めて?

検証している方がいたので、こちらのサイトを参考に自分もやってみる。

blog.tokumaru.org

そこらへんに転がってるWordPressによるサイトでやっちまうと不正アクセスとかなんとかでお縄になってしまうので、もちろんローカルホストにて行う。サクッと環境を作るべく今回はDockerで。

環境

macOS 10.12.2

WordPressの環境を立てる

Dockerが入ってなければインストールする。DockerはLinux系でないと動かないので、MacだとDocker for Macとかを入れVM上にて行う。

docker-machineを起動した後、適当な場所でディレクトリを作る。

mkdir wordpress
cd wordpress

Docker公式に空のWordpressを立ち上げるdocker-compose.ymlがあるので、wordpressのバージョンを4.7.0にしてwordpressディレクトリに保存。

Quickstart: Compose and WordPress - Docker

version: '2'

services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: wordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:4.7.0
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_PASSWORD: wordpress
volumes:
    db_data:


docker-composeにて立ち上げる

docker-compose up -d

起動できたか確認

docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
8378a4f3b730        wordpress:4.7.0     "docker-entrypoint.sh"   2 hours ago         Up 2 hours          0.0.0.0:8000->80/tcp     wordpress_wordpress_1
2af784067a28        mysql:5.7           "docker-entrypoint.sh"   2 hours ago         Up 2 hours          0.0.0.0:3306->3306/tcp   wordpress_db_1

あーいいっすねー。
ブラウザで確認する。VM上でやってる場合はIPが127.0.0.1localhostではなく、VMのIPなので

docker-machine ip

で得られたIPに8000ポートでアクセス。自分の環境だと192.168.99.100だったので

http://192.168.99.100:8000

にアクセス。長ったらしいIPは好きじゃなので

sudo vi /etc/hosts
#Docker
192.168.99.100 wp.docker

を追記して http://wp.docker:8000 でアクセスできるようにした。

アクセスするとWordpressインストール画面になるので、ログインID/PASSなど設定して完了。
サンプルに記事もダミーで作る。

f:id:shalman:20170210143324p:plain

かっこいいウェッブサイトができました。一番上の記事を書き換えます。

Postmanのインストール

今回の脆弱性WordPressREST APIによるものなので、悪意のあるパラメータをくっつけて改ざんするというものらしいです。
POSTするならcurlでもいいのですが、僕はカールおじさんじゃないのでGUIでぽちぽちやりたいです。ということでChromeアプリのPostmanを使います。

chrome.google.com

アイコンがイカしてるね。デイリーポータルZくんみたい。
起動し、無料会員登録すると、メイン画面が出てくる。

f:id:shalman:20170210144635p:plain


上のURL入力するフォームに該当APIのエンドポイントを入力すると

f:id:shalman:20170210150027p:plain

JSONで帰ってくる。APIだもの。

実行

参考サイトにならって、叩くエンドポイントとフィールドを伏せておきます。

これをPOSTメソッドにプルダウンから切り替えて、BodyタブのForm-dataにパラメータを突っ込んでく。
パラメータはidと、改ざんしたいフィールドを入力。

idは記事番号に適当な文字をくっつけたもの(ex. id:4の記事を書き換える→4A)
Sendボタンをクリックして帰ってきたJSONを見て、ステータスコードが401とかではないことを確認。

サイトをリフレッシュすると

f:id:shalman:20170210150407p:plain

本文が書き換えられて危険なWebサイトになってしまいました。

脆弱性の原因

参考にしたサイトでわかりやすく解説されていました。こちらを確認されたし。
WordPress 4.7.1 の権限昇格脆弱性について検証した | 徳丸浩の日記

get_post関数のラッパーを作って、invalidなパラメータが入ったらエラーを吐くようにしたようです。

所感

そもそもWordPressってAPI提供してたんすね。

updateの認証はupdate_item_permissions_check関数が負ってるっぽいけど、最初にセッションから確認しないのが違和感あるなー。

get_current_user_id関数がちらほら見えるので他はやってるんだろうけど、このcheck関数はget_postがemptyでもcheckがtrueになるのでキモさある。こんなもんなのかなあ。あと、ブラックリスト的にエラーを投げてる(原則true)のは怖いってことがよくわかった。

どの関数が今回の責任なのかと考えると、認証周りが甘いからcheck関数かなと思ったけども、int型以外許してとりあえずemptyにしてたget_postが悪いことになるんだな。なるほど。

intキャストで末尾のStringが消えるのもトリックだった。知んかった。ほえー。

セクション区切り

日常


卒論は参加賞、修士論文は努力賞、博士論文は勲章

参加できた。

Wordは苦手だった。小学校時代からOfficeは触ってたけども教えてもらったわけでもないので、知ってる気にはなってるけど使いこなせてはなかった。今回で数式、参照リスト、目次、カスタムページ番号の挿入法とか細かいところをフォローできた。でもまだ苦手。

内容は満足できてないのでやっぱり参加賞。担当教員のチェックも参考文献リストの修正が主だったし、考察の甘さとかつっこまれず。興味がないんだろうなーと言う感じ。「卒論は4年間の集大成」と言われると懸念が残る。だからといって2年前に戻ったとしても同じ結果だったと思う。

あてもなくやる気には満ち溢れている。次なにやろうかと思っているところ、手元にあった「はじめてのパターン認識」を読んでる。
学部1,2年に受講した統計学の復習とともにやってる。実装するかはわかんない。

大学院では、機械学習をやるかわからないけども、CV系に手を出すかもしれないので、道具をあらかじめ仕入れておきたい。
技術の学習コストは大きい。一朝一夕で習得できる技術は少ないので、地味にこういった節目の時に準備しとくと後が楽だと思う。

あとはgithubに並べて、名刺代わりになりそうなライブラリを作りたいと思ってる。多分不満ドリブン開発。「これあったらいいよね」がキーワード。今の所あんまり不満がないので長期目標。

最近はWebにめっきり興味がなくなった。3年くらいインターンという名のバイトをやってて、ステップアップする感覚がモチベーションに繋がってたんだろう。今ももちろんモチベはあるけど、Webエンジニアになりたいとは強く思ってないし、修士研究と独立した勉強になってしまう。

来月からまた実家から離れて都内に住もうと思う。仕送りなんて打ち出の小槌は存在しないので、家賃ほかを稼ぐため大学院でもバイトはしないといけない。Web続投でいくか、それとも研究に寄ったバイトで運用していくか悩ましいところ。

PS4 Pro

ゲーム 日常

f:id:shalman:20161111163817j:plain

予約して購入。ゲーム機買うのひっさびさ。

f:id:shalman:20161111163833j:plain

とりあえず、家になぜかあったドラゴンズドグマをやる。

アンチャーとウィッチャー3は中古で安かったので買い足す。