ハッカーからサイトを守れ!!

— 入力フォームに潜む危険を体験しよう —

Mission Start!

▶︎ ここは、君のサイトを守るための訓練場

▶︎ 目の前にあるのは、よくあるログインフォーム。だが、それがまさに敵の侵入口だ。

▶︎ 危険なコードが入力されると、
エラーメッセージが発動する…!(ハッキングの兆しだ!)

▶︎ 攻撃コードを入力して、
敵の手口潜むリスクを暴け!

▶︎ 君のミッションは:

⚔️ 敵を知り、 守る力を手に入れろ! ⚔️

▶︎ さあ、挑戦開始だ!

⚠️ 注意!
このミッションは学習目的専用 現実世界での悪用は禁止だ!

ミッションに挑戦だ!

🔒Mission 0🔒

ログイン突破!

ミッション内容

IDhack_me パスワードloginokを入力し、ログイン突破できるか確かめてみよう!

考えてみよう

  • どうしてパスワードには文字の種類や数に制限があることが多いのかな
  • 入力フォームからどんな攻撃ができるのか考えてみよう

ヒント

  • 入力フォームは外部からの侵入を許してしまう「入り口」になりやすい
  • パスワードに使う文字列には、攻撃に悪用される記号や特殊文字も混ざっているかも!?

⚔️ Mission 1⚔️

入力フォームに潜む罠を体験しよう!

ミッション内容

<script>alert('XSS')</script> の攻撃コードを入力し、ログイン突破できるか確かめてみよう!

どんなコード?

<script> で囲まれたコードは、JavaScript というプログラムを動かすコードです。
これが悪用されると、あなたのサイトに来た人が 悪意のあるサイトに強制移動 させられたり、偽サイトに誘導されてフィッシング詐欺 に遭う危険も!

狙われるリスク

あなたのサイトが、悪徳エロサイトやフィッシングページへの誘導に利用されるかも!?

🛡️ Mission 2🛡️

顧客データを守れ!

ミッション内容

' OR '1'='1 の攻撃コードを入力し、ログイン突破できるか確かめてみよう!

どんなコード?

' OR '1'='1 は、ログイン認証の仕組みをすり抜けるための攻撃コードです。
入力された文字列をそのままSQL文に組み込んでしまうと、本来照合されるべきIDやパスワードが無視され、 誰でもログインできてしまうという深刻な事態に!

狙われるリスク

顧客情報が流出し、サイト運営の信頼はゼロに、、、

⚠️ 最後に…

これらの対策ができていないとーー
サイトの信用は一瞬で失われ、ユーザーは離れ、最悪の場合は裁判沙汰や賠償問題に発展します。

ミッションに出てきた2つの脅威

SQLインジェクション(SQLi)

📚 ターゲット:
データベース

🛠️ 攻撃内容:
入力欄に不正なSQL文(データベースに命令をする文)を入れて、データを盗んだり壊したりする

🛡️ 防止策:
入力チェック(サニタイズ)

クロスサイトスクリプティング(XSS)

📚 ターゲット:
Webページを見ている人

🛠️ 攻撃内容:
悪いスクリプトをページに埋め込み、ユーザーのブラウザで勝手に動かす

🛡️ 防止策:
出力エスケープ(無害化)

攻撃パターンを知ろう

任意の攻撃コードを作ってフォームに入力してみよう!

攻撃手法と良く使われる文字列

手法 コード例 説明
SQLi ' 文字列を強制終了し、SQL文を壊す
" 上と同様、ダブルクォート版
; 新しいSQL文を挿入できる
-- 後続のSQLコードをコメントアウトして無効化
= 値を比較してログイン突破を狙う
' OR '1'='1 常にtrueになる条件を作りログイン突破
XSS <script>alert('XSS')</script> スクリプトを実行、アラートを表示
<img src="x" onerror="alert(1)"> 画像エラー時にスクリプトを実行
onload= HTML要素読み込み時にスクリプト実行
"> HTML属性を切り上げスクリプト挿入