2024年7月近況
うっかりしていたら「2023年のまとめと2024年の抱負」を書き忘れたまま7月になっていました。ふとブログの存在を思い出したのでなんか書こうと思います。
卒業&進学
2024年3月を以て広島市立大学情報工学部情報工学科を卒業しました。
実は卒論のテーマを9月くらいに変えて全部ひっくり返す羽目になりました。
そこからLLVMのバックエンドについて調べて実装した結果本稿提出前日まで実装を弄っていたり提出10分前に仕上げたりととんでもなくギリギリでした。お前はいつもそうだ。
できたことにはできたので何とか卒業はできました。ちなみに卒論で作ったやつを授業で使うかもしれんから出るまでにドキュメント作れって言われました。これ使うのマジ?
卒業式当日は、革靴を忘れて家に取りに戻ったら時間がギリギリになりました。
そして会場まで走っていたら階段(Google マップ)でコケました。おかげで手が血まみれの状態で1日を過ごすことになり、出会う人全員に本当に心配されました。傷が塞がるのに一か月かかりましたし深かった方の手の傷跡はまだ消えてません。多分1年経っても消えないんじゃないかな。
卒業式が終わったら傷だらけの手で何とか進学先のつくば行きの荷物をまとめました。部屋が片付いたわけではないですが必要そうなものは何とか詰めました。本が多いと引越しって大変ですね・・・
その後残りの必要な荷物を愛車に積み、つくばに向けて出発しました。
Escape from Hiroshima is a hardcore and realistic online first-person action RPG/Simulator with MMO features and a story-driven walkthrough pic.twitter.com/agDK7Tp1dG
— 百谷涼花 (@pepepper_cpp) March 29, 2024
入居が入学式前日だったので、1週間くらい前に某放電屋の知人宅へ、道中で拾った学群新入生とともに転がり込みました。到着してまず最初にやったことは肉焼き用のグリルを日本語の怪しいマニュアルを読みながら組み立てることでした。(???)
https://t.co/EHs3p14zf6 pic.twitter.com/dzofGxUFvz
— 百谷涼花 (@pepepper_cpp) March 30, 2024
入居後はその日中になんとか生活可能な状態にしました。手動ドライバーでベッド組み立てるのしんどい。
神は「光あれ」と言われた。すると光があった。
— 百谷涼花 (@pepepper_cpp) April 4, 2024
神はその光を見て、良しとされた。 第一日である。 pic.twitter.com/fhCfpPMdyY
そして入学式の日を迎え、4月より筑波大学大学院 理工情報生命学術院 システム情報工学研究群 情報理工学位プログラムに入学しました。名前が長くていまだに覚えられません。ところで入試の出願もギリギリに出してました。
一人暮らし
22年住んだ広島を離れてつくばで一人暮らしを始めたわけですが、お風呂とご飯の時間の自由が利くので気分的には楽です。ただしまともにご飯を食べているかというと・・・
つくば市は元々住んでいたところと似ているところがあるので過ごしていて違和感とかも特になく過ごしています。あまり外には出ていませんが。
入居してから、シャワートイレから水が漏れて交換したり、現在進行形で給湯器が死んで交換予定だったりしています。物がちょっと古かったのでしょうがないですね。
備え付けの無料インターネット回線は速度に不満はない(むしろ実家より夜間は安定している)のですが、ポート開放ができないので回線を追加で引きました。といっても光配線自体はどうも各戸に元から通っているようで工事はしませんでしたが。
そして頑張ってIX2215のコンフィグをこねてIPv6とIPv4両方でポートが開くようにしました。(注:私はネットワーク屋ではありません)
といった感じでぼちぼちと生きております。
2022年のまとめと2023年の抱負で書いた抱負を大体は達成できましたね。
SekaiCTF 2023 感想
ノリで誘われたのでノリでSekaiCTF(Project SEKAI CTF 2023)に参加してきました。
開始時点ですでに48時間のうち24時間が過ぎていましたが何問かは解きました。
ということで雑に書き残しておきます。
解けたやつ
Azusawa’s Gacha World(Reverse)
電子辞書のやりすぎでリバースエンジニアリングに関してはできそうだったのでとりあえずそこから攻めていきました。
dist.zipをダウンロードするとUnityのゲームが出てきます。とりあえずフォルダーの中を見るとil2cppではなくMonoを使用していることがわかるのでAssembly-CSharp.dllをdnSpyに食わせます。
中身を見ていくとGachaManagerクラスが怪しそうなのでリクエストの中身を確認します。このあと私はcurlでリクエストを投げてみたりしていましたが全く必要ありませんでした。
後でゲーム内に100万回目で確定排出と書いてあることに気づき、BepInEx+UnityExplorerを入れてGameStateクラスのpulls変数を999999に書き換えてからガチャを回すと目的のキャラクターが排出されそのリザルト画面に左下にフラグがあるので終了です。30分弱くらいでした。
Guardians of the Kernel(Reverse)
Linuxカーネルとinitramfsがあります。とりあえずGhidraにカーネルを食わせつつ(無意味でしたが)initramfsの中を漁りました。
initramfsの中の/initを見てみるとflag_checker.koという怪しげなモジュールをロードしているのでそれをGhidraにかけます。
ただ取っ掛かりがないのでとりあえずString Searchで怪しい文字列を探します。すると"Unlocked layer 1."や"Unlocked layer 2."といったものが見つかります。device_ioctl()から参照されていることがわかるのでその関数を見に行きます。
Layer1は単純でbufferの中身が"SEKAI{"であることをそのまま検証しているだけです。
Layer3はnバイト目の変換にnバイト目とn+1バイト目を使用しているので、比較に使っている定数から逆変換するにはヌルのバイトから逆方向に1文字ずつ処理すれば良いです。コードを書いても出せますが12文字くらいなので手で解きました。末尾が"SEKAIPL@YER}"であることがわかります。
Layer2が曲者で結果から逆算しようとしても途中で乗算が入ってしまっているためオーバーフローにより必要な値を一意に定めることができません。しかしバッファがヌルを含めて8文字であり全て数字であることを検証しているため、判定部をそのまま持ってきて0~9999999で総当りするプログラムを書きました。結果"6001337"であることがわかります。
ガチャの分から1時間後くらいに終了しました。
I love this world(Misc)
上2つ以外のリバースエンジニアリング系の問題は唐突にレベルが上がって解きづらかったのでその他のジャンルもぶらぶらしつつ様々な問題に中途半端に手を突っ込んでいました。その時に見つけた問題です。
.svpファイルがあります。ソフトはよくわからない(Synthesizer Vですか? 持ってないのでよくわからないです)ですが中身は平文JSONなので読んでみます。
どうやら歌詞やピッチが書いてあるようですが歌詞に対して明らかに発音データが合っていません。歌詞にもフラグとして成立しそうな文字列がありますが問題の方にフラグに日本語は含まれていないと書いてあるため、気合で発音をアルファベットに変換してみるとフラグを含む文字列が得られます。フラグは書き残してないので忘れました。
カーネルの分から実に3時間半後のことでした。
DEF CON Invitation(Forensics)
.emlファイル(電子メールデータ)があります。文面は普通ですが添付されているカレンダーデータ中にあるサイトに飛ぶと地図が出てきます。地図下のオフラインマップをダウンロードするボタンを押すとpngに拡張子偽造しようとした.vbsファイルが出てきます。
.vbsファイルはかなりいらない情報が多いのでいい感じに読み飛ばします。まず必要なのはOwOwO(ewkjunfw)の結果です。ewkjunfwの中身はある画像データのダウンロードURLをHexにしたものでした。
とりあえずそれをダウンロードしますがファイル名にXORedと書いてあります。PNGのmagicと突き合わせて鍵を見つけようとしましたが16Byte程度では規則性が見つけられませんでした。PNGファイルで基本的に値が一致するのはそれくらいのようなのでこの方法では鍵がわかりません。
しばらく悩んでいたのですが、最後のExecuteのところを見る必要がありました。これはあるURLにJSONをPOSTしています。試しにPOSTしてみるとJSONが返ってきて、msgにお前はadminじゃねえというメッセージが入っています。ということでusernameをadminとして送信してみるとなんか鍵が返ってきます。この冒頭部分がさっきXORして計算した結果と一致するのでこれがXORに使用した鍵とわかります。
あとはファイル全体にその鍵でXORをかけて復元しpngを開くと画像にフラグ"SEKAI{so_i_guess_we'll_get_more_better_next_year-_-}"が書かれています。
I love this worldから1時間くらいあとに終わっていますが実際にはI love this worldに手を付ける前から始めています。
解けなかったやつ
こっからは順不同です。強いて言えば問題の添付ファイルの名前順?
Cosmic Ray(Pwn)
実行ファイルがあり、このプログラムのメモリ空間のうち1bitを反転させることができるプログラムです。
チームの他の人がうんうん唸っていた記憶はありました。最終的に私がたどり着いた結論はデータ領域ではなくプログラム領域、それもmain関数のスタックカナリアの部分を無効化すれば良いことに気づきました。jeとjneはちょうどオペコードが1bit違いなのでそこを反転させるとスタックカナリアが「破壊されていないとき」に文句を言ってabortするようになります。
あとはshellcodeを組むだけなのでしょうが実際に攻撃する環境下でのスタックアドレスがわからず戻りアドレスを確定させられなかったのでSIGSEGVを起こさせるのが精一杯でした・・・。
Infected(Forensics)
.pcapngがあります。WordPressに対して攻撃しているっぽいのはわかるんですがどこで攻撃が完了したのかさっぱりわからず・・・。
Scanner Service(Web)
Docker用のファイル一式があります。中のプログラムはrubyで書かれています。
入力を検証してコマンドラインに渡してそうではあるんですが、rubyの標準の文字列->数値変換関数は数字として認識できる文字までで変換をストップしてしまうので実際には検証しきれていません。
そこがポイントであることまではわかりましたが、その前段にシェルで意味を持つ記号類がエスケープされてしまっているのでどう入力を組めば実際の攻撃が可能なのかはわかりませんでした。他のチームメンバーも同じところで詰まっていた気がします。
Text Sender(Pwn)
実行ファイルがあり、メッセージを作成したり送信できるプログラムということになっています。Ghidraに食わせましたがどこが弱いのかよくわかりませんでした。
Conquest of Camelot(Reverse)
実行ファイルがあり、OCamlで書かれているようです。本体の処理部分の位置は分かりましたが非C系言語のネイティブバイナリにありがちなよくわからない関数呼び出しで追いきれませんでした。
Eval Me(Forensics)
.pcapngファイルがありますが、中の通信の大半がTLS通信で見えません。client randomがエクスポートできるような感じですが中の通信と一切合致しませんでした。
SSH(Misc)
.ovpnファイルがありネットワークに接続できます。nmapしてみると10.0.0.1~10.0.0.4がありますが10.0.0.4の22番くらいしか開いていません。後で気づきましたがwiresharkも見るべきだったかもしれません。どこかから10.0.0.4に対してsshしてるかもしれないので。
Teyvat Travel Guide(Reverse)
急に別ゲー出すじゃん。
実行ファイルがあります。48x48のマスの右下まで到達する必要がありそうですが途中に見えない罠がありそこを通ると死んでしまいます。
罠を置いている処理の箇所は見つかったのですが進むたびに更新されているので追うのがめんどくさいです。全探索すれば終わってしまうからPoWがついてるんでしょうね。
と書いて気づきましたがもしかしてバイナリを弄ってPoW無効化してから全探索すればよかったですか?
A letter from the Human Resource Management(Misc)
.txtファイルがあります。Human Resource Managementは持っとらん。
Network Tools(Pwn)
実行ファイルとそのソースコード(rust)があります。main関数は中がunsafeで囲まれており、また他のチームメンバー曰くバッファに対してデータを読みすぎているところがあるということでしたがshellcodeの組み方がわからないので撤退。
Sahuang Flag Checker(Reverse)
実行ファイルがあります。これが地味に厄介でGhidraだとAVX命令周りでディスアセンブルに失敗するところがあるのでまともに読めません。Cutter(radare2のGUIフロントエンド)を使用したらちゃんと読めるんですが逆にデコンパイラの出力が地味に読みづらく追うのを諦めました。
SekaiCTFCorp(Misc)
ウェブサイトのURLがあります。下の方の企業ロゴ(?)のリンクが切れている以外は特に何もありません。多分。それ以外何もわかりませんでした。
感想
簡単な問題しか解けませんでした。Cosmic Rayとかも簡単ではあるっぽいんですが・・・。
CTF筋が足りてない感じがします。まあCTFはちゃんとやったことは今までないですしリバースエンジニアリング系は単純にGhidra力でゴリ押してるのでさもありなんという感じでしょうか。本来定石を押さえておくべきなんでしょうね。
ただ全くできないというわけでもなさそうなので、もしまたやるときがあればもう少しいい感じにしておきたいですね。
広島国公立三大学の名称とかもろもろについて
広島の大学名は地味にややこしい。広島市にキャンパスが存在する国公立大学だけでも(国立)広島大学、県立広島大学、広島市立大学が存在する(ただし広島大学の本拠地は広島市ではない)。私立も含めると.*広島.*大学にマッチする大学は多い。
しかもさらにややこしいのが県立広島大学は広島県立大学ではなく、同様に広島市立大学は市立広島大学ではないことだ。慣れていない人間は割と間違えることがある。
県立広島大学を「県立広島」あるいは「県広」と略してしまった場合、県立広島中・高等学校と衝突してしまう。「広大」と略せば当然国立大学と衝突する。
ちなみに近畿大学付属中高や修道中高と異なり、県立広島中高と県立広島大学の間には何の関係もない。むしろ県立広島大学に進学する人間の数倍は広島大学に進学する。
広島市立大学はもっと面倒な問題がある。広島市立大学の英語名称は"Hiroshima City University"である。これを順当に略せばHCUであるが、実はHCUは広島都市学園大学 "Hiroshima Cosmopolitan University"に先に取られているのである。
このせいで広島市立大学のドメインはhiroshima-cuになるのだが、広島大学のドメインhiroshima-uと非常に似通っている。いつもと違う方の大学のドメインのページを見るとChromeが「間違えていませんか?」というポップアップを出してくる。余計なお世話だ。
広島市立大学の日本語略称に関しても若干思うところがある。公式の略称は「いちだい」となっているはずだが、市立大学は全国にたくさんあるのでこの略称だと10校くらい被りそうな気がする。
広島市立大学生のTwitter民はよく「いちぴろ」という略称を使う。これはかなり理にかなっているように見えるが、ここで冒頭の部分を思い出してほしい。「広島市立大学は市立広島大学ではない」のである。しかし「ひろいち」「ぴろいち」もしっくりこない。困った。
あと広島市立大学の正式な読みは「ひろしましりつだいがく」なのだが入力しようとすると高確率で「広島私立大学」になる。発音しても地味にわかりにくいので「ひろしまいちりつだいがく」と呼ぶことも多い(というか「いちだい」もこの読み方でないと成立しない)。
ということでこの大学名問題を解決する方法と言ったら、何か突飛な名前に変えるくらいしか思いつかない。ちなみに私は広島市立大学を「市立山の上大学」、(国立)広島大学を「国立山の上大学」と呼ぶことがある。
この問題、実は7年位前からネタにされてるんですよね。
ある意味不明なホームページの話
もしもホームページが全て画像で構成されていたらあなたはどう思うだろうか。
そんなバカなホームページがあるわけがないと思うだろうが、実は実在しているのである。
今回はそんなとんでもないホームページ「北辰映電」について語ろうと思う。
以下の記述は2023/1/16時点のものである。
(自分のツイートを掘り起こしたりいちいち変なところ思い出すのがめんどくさいだけ)
北辰映電って?
北辰映電は広島市を本拠地とする株式会社である。大学とかに色々納入しているらしい。
そしてこの会社が関わった(少なくとも広島市立大生には)最も悪名高いものがぎゅっとeと呼ばれるeラーニング英語システムである。ぎゅっとeがなぜ悪名高いかはGoogleで検索すると少しばかりわかると思う。Twitterのほうが見つかるかもしれない。
(ただぎゅっとeの悪評に関してはぎゅっとeそのものの悪評とぎゅっとeを使用した授業に対する悪評が存在するのでこの会社だけが悪いわけではない)
で 何がヤバいの
まず全てが画像で構成されている。全ての文章もだ。コピーしようとしてドラッグしたならばあなたは妙ちくりんな切られ方をされた画像がカーソルにひっついてくるのを見ることができるだろう。UserCSSで画像を回転させるアニメーションを適用したらもう阿鼻叫喚だ。
(追記:実際にUserCSSを適用したGIFを作成していたpuhitaku氏から使用の許可が出たのでここに貼っておく この画像は2021/12/06時点のもので2023/1/16時点のサイトと若干異なる)
左の会社概要のリンクは何も問題はない。(ただし中のページの画像の区切りに関しては別だ)
しかし下の会社概要のリンクを開くと味のあるエラーページを見ることができる。URLのcompanyの綴りを間違えてしまっているのだ。
リンク集は割と普通に見える。テキストが途中でぶった切られているようには見えない。
・・・おや?下のリンク集が反応しない。なんとすぐ上のテキストとフッターのリンク(だったもの)が一体化している。
一体どのようなオーサリングソフトを使えばこんなことになってしまうのか、今まで答えにたどり着いたものは居ない。ただ一つ進歩しているのは、比較的最近更新されたページの画像の区切りは多少マシになっていることである。全て画像である時点で論外ではあるが・・・
2022年のまとめと2023年の抱負
ゆでっちがツイートしてたので便乗
2022年のまとめ
2022年というやつも、なかなか濃い一年だった気がします。大学生になってからなかなか退屈しなくなりました。
ということでまずは1月から順に振り返っていきたいと思います。
1月
— 百谷涼花 (@pepepper_cpp) January 1, 2022
新年早々基板設計をしていました。というより確か12/31からずっと夜通し設計してた気がします。これが初めての基板設計でしたがpcjpnet氏や金魚氏のアドバイスでよさげな基盤が完成しました。
初秋月 pic.twitter.com/xKwFFMtHR2
— 百谷涼花 (@pepepper_cpp) December 31, 2021
初秋月もこのタイミングでした。ところでこのツイートの日付が2021/12/31になっているように見えるかもしれませんが多分時差のせいです。
??? pic.twitter.com/s3HoYdWYMD
— 百谷涼花 (@pepepper_cpp) January 29, 2022
pcjpnet氏から温調はんだごてをいただきました。長時間使ってても無駄に熱くならないのでやりやすいです。
2月
この辺りからVRChatにぽつぽつログインするようになりました。
3月
ここが東京かあ pic.twitter.com/c5KkxHqdgV
— 百谷涼花 (@pepepper_cpp) March 5, 2022
初めて自分の足で東京に来ました。というよりこれまで東日本に行ったことが高校の修学旅行で羽田と成田を経由したことしかなかったです。やっぱりみんながいるとたのしいね。
なお8月にも行きました。2023年の2月にも行く予定なのでみんなよろしくね。
4月
puhitaku氏の岡山拠点を訪ねてきました。もちろんハードオフ巡りもしてきました。
よく考えたら県外で車を乗り回すのこの時が初めてでしたね。
あと新学期初日辺りで車のバッテリー上がりました。
5月
RTX3060を買いました。VRChatが快適になりました。
6月
インターンの選考受けたらめちゃくちゃ感触良かったのにダメでした。地理的に仕事やらせにくいのかもしれない。
あと誕生日に哺乳瓶で酒飲むやつまたやりました。やっぱり飲みづらいので3回目はやらないと思います。
7月
— 百谷涼花 (@pepepper_cpp) July 24, 2022
ゆでっちに圧力をかけてアバターを買わせました。
あと中旬に車の右側面を破壊してしまい、8月東京から帰って来るまで代車でした。
月末にTOEIC受けに行きました。学校で受けてたやつは1時間くらいで終わる奴だったんですが、ノーマルのやつは2時間くらいかかるので反動がとんでもなくキツかったです。二度とやりたくない。
8月
東京にいました。前回は新幹線でしたが今回は飛行機です。チャレンジパッドにLinux移植したりVRChatterとオフしたりしました。ラジオデパートと秋月電子・千石電商辺りはあまり迷わなくなりましたね。
何故か電子辞書Linux(Brainux)が日経Linuxに載ってしまいました。自分が関わった活動がここまで大きくなるとは思ってませんでした。
9月
筑波にいました。その前にMaker Faire Tokyoにpcjpnet氏の手伝いで出展側で参加してました。ガチ放電してるテスラコイル見たの初めてだったかもしれないです。横に置いてたMIDI再生用Arduinoがたびたび死んで音鳴らなくなってたの面白かったです。
この時私はスマホのテザリングで「広島に秋月電子通商を」というSSIDでプロパガンダをしていたのですが、同時に「🍉は電撃で割るに限る」等のSSIDのビーコンを飛ばしていた人がおり、広秋電が気に入ったのかVRChatで会うたびにペンで書いていきます。
あとレインボーブリッジは封鎖できませんでした(それはそう)。
研究室配属されました。第一志望で通ったのでよかったです・・・というよりそもそも志望者が定員割れ状態だったらしいです。
10月
Stable Diffusionで遊んだりしてました。
サーバー機の更新をしました。これでマイクラサーバーを動かしてもOOMされずに済みます。
11月
研究室で廃棄処分になる諸々からいろいろかっぱらってきた結果大量の74HC/ACシリーズとSRAMを手に入れました。
IX2215を落札しました。これでVPNを二本張って4ポートずつで接続できます。
ノートパソコンの底面のプラが微妙に割れて2か所くらいネジ止めがネジ止めの意味をなしていないことに気づきました。院に上がるときに買い替えた方がいいのかもしれないです。
12月
電子辞書Linuxが日経Linuxで連載になってしまいました。そんなことあるんだ。
魔改造したSlimeVRのセンサー部分のケースを作ってました。いい感じにできた気がします。しかし出力値がバグっているのでまともに使用できません。
まとめ
今年もいろんなことをしたしいろんなことが起こっていろんな人と出会った1年でした。とりあえず眠い時に車を運転すると本当に終わるということは身をもって体験しました。
2023年の抱負
筑波大学院合格 部屋の片付け VFDClock改の制作(はよラズピコW出ろ)
筑波は秋月から遠い? うるせえ!こっちからは片道1万円はかかるんだよ!(?????)
ということでこれからも皆さんどうかよろしくお願いします。
- ぺぺっぱーより 愛と感謝を込めて