コース目次 / 第0章

はじめに — 注入は、境界の崩壊

ばらばらに見えるインジェクション各種が、実は「データが別の言語のコードとして解釈される」という一つの形だと掴みます。起こす側と直す側を対にする方針を確認し、法と倫理ゲートに同意します。

第0章 / 全6章目安 約6分この章のゴール: インジェクションの共通の形(データとコードの境界の崩壊)を理解する

旗艦コースで、反射 XSS を一つ扱いました。このコースは、その仲間——インジェクション(注入)の穴を、ひととおり体で覚えます。XSS の三種、SQL、コマンド、テンプレート(SSTI)、パストラバーサル。名前はばらばらですが、根はたった一つです。

すべての注入は、同じ形をしている

信頼できない入力が、別の言語の「文法」として解釈された瞬間、穴が開く。
・XSS — 入力が HTML/JavaScript として解釈される。
・SQL インジェクション — 入力が SQL として解釈される。
・コマンドインジェクション — 入力が シェルのコマンドとして解釈される。
・SSTI — 入力が テンプレートの式として解釈される。
どれも、あなたが「ただのデータ」のつもりで扱った入力が、どこかでコード(命令)に化ける。データとコードの境界が崩れる——これが注入の正体です。

一つの形だと分かると、直しも一つに畳めます。データを、コードに混ぜない。文字列連結で命令文を組み立てるのをやめ、データはデータとして(パラメータとして)渡す。出すときは、出す先の文法に合わせてエスケープする。この原則を、各層で手を動かして確かめます。

起こす側と、直す側を、対で

このコースの約束は、旗艦と同じ攻撃 → 修正 → 再検証、そして——

一つの穴を起こしたら、必ずその場で直す。「危ないコードを見た」で終わらせず、「こう書けば安全」まで対で身につけます。攻撃だけ覚えても、あなたは作る側で同じ穴を空けてしまう。直し方まで手が覚えて、初めて「注入を分かった」と言えます。

このコースの地図

法と倫理ゲート

手を動かす前に

このコースは攻撃の技術に触れます。実習してよい相手は、次の3つだけです。

  • (a) 自分で作った練習用のやられ環境(このサイトが配る自作ターゲット)
  • (b) あなた自身の許可された環境(自分の Thousand SKY・secret-notes-ctf など)
  • (c) CTF 競技の中(規約の範囲で)

実在する第三者のシステムを許可なく触ることは、不正アクセス禁止法に触れます。 このゲートは、その線引きを毎回の入口で確かめるためのものです。詳しくは「セキュリティの法と倫理」へ。

すべて、自分の 127.0.0.1 に立てる自作やられ相手です(法と倫理)。

章 注入 直しの本命
第1章 XSS 三種(反射・保存・DOM) 文脈別の出力エスケープ
第2章 SQL インジェクション パラメータ化(プレースホルダ)
第3章 コマンドインジェクション シェルを介さない(引数配列)
第4章 SSTI とパストラバーサル 入力をコード/パスに混ぜない・許可リスト

準備ができたら、次の章へ。まずは、旗艦で一つだけ見た XSS を、三種そろえて見比べます。

こうなっていればOK

卒業まであと5章です。

この章はまだ完了していません。