Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Untitled
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
fuse
April 23, 2026
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Untitled
fuse
April 23, 2026
More Decks by fuse
See All by fuse
Rust(Aya)入門 カーネルレベルでTwitterをブロックする
zzzefulucawa
0
64
10年前にCo2可視化した動画を見た
zzzefulucawa
0
12
10年前にCo2可視化した動画を見た
zzzefulucawa
0
260
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
273
28k
Building Applications with DynamoDB
mza
96
7.2k
How to Think Like a Performance Engineer
csswizardry
28
2.9k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
Paper Plane (Part 1)
katiecoart
PRO
2
12k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
710
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
330
Amusing Abliteration
ianozsvald
1
350
Building AI with AI
inesmontani
PRO
1
1.3k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
540
Transcript
古部少年の ゲームきっかけ IT技術習得歴 小学生の僕に、技術のきっかけを教えてくれたゲームの話 Engineer Unite / Furube.seigi
自己紹介 会社 株式会社テクノプロジェクト ヘルスケアサービスデザイン部 仕事 Azure / AWS インフラ基盤支援 生まれ
2000年(C:ドライブ世代) ゲーム ゲーマー歴 = 年齢。ゲームをしない日はない。生まれる前からドラクエ を聞き、生後もJALECOのゲームで一緒に遊ぶ
ゲーマー歴、ほぼ全ジャンル 生まれる前からドラクエの話を聞き、生まれた後すぐにJALECOのゲームをし、 FF4にハマり、今はPCゲームを転々と遊んでいます。 RPG アクション アドベンチャー ビジュアルノベル シミュレーション ストラテジー 格闘ゲーム
パズル スポーツ・レース 謎解き オープンワールド ステルス リズムゲーム カードゲーム プログラミング 苦行
01 出会い: そのゲームのこと
最もエンジニア人生に影響を与えたゲーム 某ブラウザオンラインゲーム 小学生のころに初めて遊ぶ 黒歴史がやばいのでタイトルは永遠に絶対に秘密 通話できる人はカースト上位 ここがポイント!
どんなゲーム? ログインしてチャット。 自分のアバターを育ててレベルを上げていく、シンプルなゲーム。 コミュ力 ゲーム このゲームが、私のIT人生を歩むきっかけ 兼 元凶になります。 地位はレベルでも決まる
02 ゲームを 自動化したい
ゲームの自動化、始めました このゲームの本質は「レベルを上げてチャット派閥での地位を上げること」。 課金もできない小学生にとって、レベルがすべてだった。 ひたすら無言でレベル上げ… ゲーム部分がクソつまらん。 → 数年後、自動化路線を考え始める
自動化の進化の歴史 STEP 1 UWSC 座標固定のため デザインが変わると死 ぬ → STEP 2
Python + Selenium ブラウザを 開き続けないといけな い → 他のゲームができな い CSS / HTML / JS を学ぶ → STEP 3 urllib + BeautifulSoup ブラウザ不要に! GET / POST / Cookie を 学ぶ → STEP 4 LINE Bot (GCP / Heroku) 通知を LINEで受け取りたい → 挫折して終了
UWSC 〜 自動化ツール その1 〜 UWSCとは? Windowsのキーボード・マウス操作を記 録・再生して自動化する無料ツール。プ ログラミング知識なしでクリックや入力 を自動化できる。
// マウスを座標(500,300)に移動してクリック MOV(500, 300) BTN(LEFT, CLICK) SLEEP(1) やったこと:ゲームの攻撃ボタンをひたすら自動クリック スクリプトを記録&入力し、プログラミングの知識をつけていく。 問題:座標固定のため、ゲームのデザインが少し変わると動かなくなる ユーザーに自動化しているとばれるとヤバイ!
Python + Selenium 〜 自動化ツール その2 〜 Seleniumとは? Pythonから操作できる、ブラウザ自動操 作ライブラリ。Webのテストやスクレイ
ピングによく使われる。CSSセレクタで HTML要素を指定して操作できる。 from selenium import webdriver driver = webdriver.Chrome() driver.get("http://game.example") # ボタンをCSSセレクタで探してクリック btn = driver.find_element( By.CSS_SELECTOR, ".attack-btn") btn.click() 得たもの:HTML / CSS / JavaScriptの基礎知識 問題:ブラウザを開きっぱなしにしないといけない。他のゲームができない
urllib + BeautifulSoup 〜 自動化ツール その3 〜 urllibとは? Pythonの標準ライブラリ。ブラウザを開 かずにHTTPリクエストを直接送れる。
GETやPOSTでサーバーと通信し、Cookieも 手動で管理できる。 import urllib.request import http.cookiejar # Cookieを保持しながらログイン cj = http.cookiejar.CookieJar() opener = urllib.request.build_opener( urllib.request.HTTPCookieProcessor(cj)) # POST でログイン opener.open(url, data) 得たもの:GET / POST / Cookie / HTTPの仕組みを体感した ブラウザ不要!バックグラウンドで動く! → 他のゲームもできる!
LINE Bot 〜 自動化ツール その4 〜 「自動化の操作を友人とLINEでしたい」という欲が生まれる。 Heroku / GCP
クラウド上でPythonプログラムを常時起動する ためのプラットフォーム。LINEのWebhookを受 け取るサーバーとして利用。 → LineのBot作成まで作り、そこから挫折。 Lineのメッセージと自動化の指示をどうつなげるか少し悩んでやめた。
03 脆弱性との 出会い編
このゲーム、やばすぎる エラー全公開 連打するとエラー → システムバージョン・DB情 報がダダ漏れ MySQL丸見え なぜかDBが全公開状態 インジェクション無対策 検索に
' を入れるだけでDBエラー → 内部情報がユーザーに筒抜けで出回る 文字化けでGMコマンド実行 おそらくDB側がShift-JIS設定。バックスラッシュ を文字化けさせコマンドを実行可能 TTL無限のセッションID セッションIDが漏れたら乗っ取られ放題 しかもどっかから漏れてる 掲示板でXSS可能 スクリプトが普通に動く → 報告フォームからメール返答なし。 有識者が社長のTwitterDMに送って解決
乗っ取りバトル セッションIDが漏れ、攻撃者が自分のアカウントを乗っ取り開始 自分の対策:再度ログインしてセッションを更新! セッションIDをどこからか入手してきて、アカウント乗っ取り再開 数時間の攻防の末、根負けして敗北 「こいつに勝ちたい」→ どうやったのかを調べる
04 見当違いの アプローチ編
「ゲームの設定はexeの中にある」という確信 プチコンmkIIなども同時期に遊んでいた古部少年。 「知識があれば設定を確認・編集できる」と確信。 → STEP 01 バイナリエディタ プロセスメモリエディタ デバッガ Stirlingなどでexeを解析しようと
する → STEP 02 16進数の海へ 横についていた文字=ニモニッ ク(アセンブリ)を発見。「こ れは何だ……?」 STEP 03 C言語を学ぶ 「英語なら全部同じだろ」 → 完全に見当違い
「なぜ動くのか?」を自分で再現する その後、ゲームで出回っていた情報をもとに、SQLまわりを学ぶ。 「こいつに勝つためにSQLiとXSSを調べた。DVWAがオススメらしい。」 → 脆弱なアプリを自前でデプロイして動かしてみることにした。 $ sudo docker run --rm
-p 80:80 dvwa [*] DVWAをデプロイ → Linux / Docker / MySQLを学ぶ(必要に迫られて) [+] ショップ検索に ' を入力 → DBエラーを確認 [+] 情報取得を再現できた [+] スクリプトが画面で実行されるメカニズムを理解 [!] 「エラーを出すことが攻撃の第一歩」を体で覚えた 得たもの:SQLi / XSS / Docker / Linux / MySQL の実践知識
05 まとめ
古部少年の行動パターンを分析すると この歴史を振り返ると、すべての行動に共通する構造があった。 動機 ゲームで 強くなりたい → 行動 手当たり次第 に試す執念 →
失敗 目的が 達成できない → 習得 過程で 技術が身につく 実例: UWSC → 失敗 → 座標・マウス操作の仕組みを知った Selenium → ブラウザを諦める → urllib でHTTPを理解した バイナリ解析 → 見当違い → サーバー・アセンブリの概念を知った 乗っ取り → 敗北 → SQLi・XSSを本格的に調べるきっかけになった
つまり、 やったことの「結果」より 「過程」で得たものが、今につながっている 皆さんの失敗した挑戦も、見当違いのアプローチも、 途中で諦めたあれこれも、必ずどこかにつながっています。 ゲームのせいであり、ゲームのおかげで、今ここにいます。 ご清聴ありがとうございました ゲームは私にこう教えてくれたのではないでしょうか?