過去問解きまくり研究所 ホーム

平成28年度 春期 情報セキュリティスペシャリスト試験 午前Ⅱ 問21

攻撃手法

SQLに関する問題

“アカウント”表に対して,SQL 文を実行したとき,“アカウント”表の全ての行が取得される入力パラメタはどれか。ここで,入力パラメタのエスケープ処理は行わない。また,“;”は SQL 文の終端として解釈されるものとする。

アカウント

IDユーザ名メールアドレス
A001TARO JOHO[email protected]
A002JIRO JOHO[email protected]
A003HANAKO JOHO[email protected]

〔SQL 文〕

SELECT ID,ユーザ名,メールアドレス FROM アカウント
  WHERE ユーザ名 = '[入力パラメタ]';
答えと解説を見る

✓ これが正解ア' OR '--' = '--

解説

'--' = '--' は常に真なので、全ての行が取得されます。

入力パラメタを SQL 文の引用符の間にそのまま埋め込み、できあがる文を一つずつ組み立てて確かめます。正解の入力を埋め込むと、条件は ユーザ名 = '' OR '--' = '--' となります。前半はどの行にも当てはまりませんが、後半の '--' は引用符で囲まれた文字列なので、同じ文字列どうしの比較として常に真になります。OR でつながっているので、全ての行が条件を満たします。二つのハイフンが注釈の始まりとして働くのは、文字列の外に置かれたときだけである点がポイントです。

ほかの選択肢はなぜ違うのか

この問題の用語

出典:平成28年度 春期 情報セキュリティスペシャリスト試験 午前Ⅱ 問21

同じ用語が出る問題

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)