【正解の解説】
バッファオーバーフロー
これは、コップに決まった量の水しか入らないのに、勢いよく大量の水を注いだあふれ水が周囲の書類を濡らしてしまうような状態です。プログラムで用意されたメモリーの部屋(バッファ)に、入りきらないほどの巨大なデータを無理やり詰め込むと、隣の部屋にあるはずの重要な管理情報(リターンアドレス)まであふれ出して書き換えてしまい、攻撃者にシステムを乗っ取られてしまいます。
【その他の選択肢の解説】
SQLインジェクション
入力値の長さをチェックせずにメモリをあふれさせる問題ではなく、データベースへの問い合わせ文の組み立て方に不備がある点が誤りです。ユーザーの入力をそのままSQLの一部として解釈させてしまうため、データベースの中身を不正に盗み見たり改ざんされたりする危険性があり、メモリ破壊を狙うバッファオーバーフローとは仕組みが全く異なります。
クロスサイトスクリプティング
メモリ上のバッファあふれを狙うのではなく、Webブラウザの表示機能を利用して悪意あるプログラムをユーザーに踏ませる点が誤りです。掲示板やSNSなどの入力欄にJavaScriptタグなどを書き込み、別のユーザーの画面で実行させることでクッキーを盗むなどの被害を引き起こしますが、C言語のメモリ管理に起因する今回の問題の脅威とは異なります。
ディレクトリトラバーサル
プログラムのメモリ領域を破壊して任意のコードを実行させる問題ではなく、サーバー内のファイルパス指定の不備を突く点が誤りです。「../」などの特殊な文字列を使って、本来見えてはいけない公開フォルダ外のシステムファイルや設定ファイルを覗き見る攻撃であり、メモリの領域超過を狙うバッファオーバーフローとは対象が異なります。