第6話 ペットの名前
通りを歩いていると露店に色とりどりの卵が並んでいる。
「にいちゃん、ペット買わないか」
ペット? あー。最近のゲームはそういうのあるよね。この卵売りの少年の肩にもリスのような可愛らしい小動物が乗っていた。そういう感じのペットね。ここはチュートリアルだけでも聞いておくか。
「なあに、難しいことはないさ。卵に名前をつけてやってくれ。そして後はひたすら温める」
「無造作に卵置いてるけど、これちゃんと孵るんか?」
…………スッ
あ、目を逸らした。
まあいい、気になるところもあるしな。ひとつ買ってみるか。ひとつひとつ卵を手に取り、太陽にかざして見る。んー。こいつは血管がはっきり見えるし無難だろうか。
「5アスだよ。まいど! にいちゃん、みない顔だね。名前はなんてーの?」
「
「はげ?」
「
なに言いやがるんだこのクソガキが!
「遠くから来たの? なんか変わったものいろいろ持ってるって」
「役にたたんガラクタばかりだ」
そう言ってコエルロサウラヴスの羽をくれてやる。
「なにこれ? コウモリの羽?」
「コエルロサウラヴスというらしいぞ」
「こえるろ? なんに使うもんなの?」
「知らん」
「なんでこんなの持ってんのさ……?」
…………スッ
「あ。目を逸らした」
§
卵売りのクソガキから逃げ出すと市場を歩く。
「聖女様がお戻りになられたらしい」
「えらく遠くまで巡礼に行くとか言ってたやつか」
「それそれ。ベテル教会で説教があるってよ」
「遠くのなんか面白い話でも聞けるかもしれんなあ」
そう大きくはない町だが、中央の丘の上には立派な教会が建っていた。あれがベテル教会とやらだろう。町並みはマジの中世風で窓ガラスすらない。ここはSkyrimの世界かっての。町の女性の面立ちがそこまでくどくないから大丈夫だとは思うが……。プロローグでいきなり斬首とかそういうのはなしでお願いしたい。
とはいえ中世。雰囲気がそう暗くないので洋ゲーという感じではなさそうだ。ガイジンは中世というと暗黒時代のイメージが強くてダークファンタジーになりがちだからな。あっちの世界観でファンタジー世界に転生なんかしようものなら文字通りクソ
ゲームの歴史を見るに、ドラゴンクエストは偉大だったな。中世(?)ヨーロッパ風のファンタジーだが暗くない世界観。あの文化が日本にナーロッパ的なファンタジー世界を産み出したのだろう。あの時代に洋ゲーをあのどろどろした暗黒時代のイメージのまま忠実に輸入していたら、もっと日本のゲームやコミック、ラノベといった大衆文化はダークな方向に振れていたはずだ。
この世界の神がどんなやつかは知らないが、日本
§
人目につくのも嫌だったので町はずれにやってきた。ハッキングの試行錯誤というのは奇行そのものなので人目に付くところではやりたくない。
さて。卵の名前だが……。6文字か。
デフォルト名はどんなのだ? ゲレゲレとかそういうセンスかもしれないが。
『ジャーレッド』
そうきたか……。もしかしてもしかすると続けて文字を入力できたりするんじゃあるまいな? 中空に浮かぶUIで文字入力をしても表示は『ジャーレッド』のまま。しかし、 <BS をタップしても文字が削除されない。余分に入力した文字数より多く <BS をタップするとようやく『ジャーレッド』の文字が後ろから削除され始める。
「どこのダンジョンとドラゴンの世界観のアーケードゲームだよ!」
いわゆる境界値バグの一種である。この入力欄で1文字入力するとカーソル位置は+1される。しかし、最大で6文字なので、カーソル位置が6文字目(最後の文字の手前)の時だけは文字を入力してもカーソル位置を+1しない。続けて文字をタップすると、最後の文字が書き換えられる。そういう作りになっているのだろう。
ここで、デフォルト名ボタンを使うと何かしらのデフォルト名が入力される。『ゲレゲレ』なら4文字だが、この時カーソル位置は名前の末尾の5文字目に移動していて、続けざまに文字をタップすれば『ゲレゲレああ』といった感じに入力できる。
ところがだ。デフォルト名が6文字の「ジャーレッド」だとどうなるか? カーソル位置がデフォルト名の文字数+1の7文字目の位置に移動してしまう。末尾の6文字目なら文字入力してもカーソル位置を動かさないという作りゆえに、その6文字目の壁を突破してしまうと本来入力できないはずの7文字以上の名前が入力できてしまう。
そして、入力された7文字以降はメモリ上のペットの名前以降の部分にあるステータスを上書きして変なステータスのチートキャラを産み出すことだろう。昔のダンジョンとドラゴンの世界観のアーケードゲームにそういうバグがあったんだよ。
まあこの世界のペットシステムは初めてだからな。最初は様子見である。うまくいきそうならメモリ書き換えのパラメータを試行錯誤してメモリレイアウトを解明したいところだが、卵を膨大な数だけ買い込まないといけなくなるからな……。このあたりは気長にやっていくしかあるまい。
卵に命名すると、すぐさま光り輝き始める。
「おわっ。すぐ孵るのかよ!」
これはパラメータをいじったせいかもしれない。さて何が出てくるか……!
「グオォォォォォ!」
「やべえ!」
すぐさまダッシュ。卵から孵ったペットも俺についてくる。このまま森に隠れるぞ!
----------
古い時代には入力欄に想定よりも長い文字列を突っ込むとメモリが破壊されるバッファオーバーフローという現象がしばしば発生しました。詳しく知りたい方はWikipediaの解説などを参照してみてください。
https://ja.wikipedia.org/wiki/%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC%E3%83%A9%E3%83%B3
こうしたメモリの扱いのミスは昔はよく起こっていたのですが、近年は本当に少なくなりました。これはプログラマがみんな気を付けるようになったから……ではなく、開発に用いられるプログラミング言語や、チェックツール、その他の環境といったものがこうしたメモリ破壊を未然に防ぐように、安全設計へと向かっていったからでしょう。
本作のタイトル「異世界で名前をhoge');INSERT INTO role (name,role) VALUES ('hoge','god');--にしたら神になれた」がカクヨムのシステムで障害を起こすことなく表示できていることからも、こうした対策が進んで古典的な脆弱性が成立しない作りになっていることが分かるかと思います。
もし、カクヨムのシステムのセキュリティがザルで攻撃が成立していたら、この小説は発表前の時点で大炎上してたかもしれませんね。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます