7-4安全なデータベース処理Tips452 文字コードの特徴を利用したSQLインジェクションを理解する
Level2
Point「5C問題」に注意する
文字コードの特徴を利用したSQLインジェクション攻撃も存在します。有名な例として、Shift_JIS文字コードの特徴を利用した攻撃があります。
サンプルプログラムは、Shift_JISで記述されたPHPファイルです。このプログラムにアクセスし、テキストボックスに下記のように入力します。
貼';DELETE FROM reviews--
addslashes関数で入力値をエスケープしているにも関わらず、不正なSQLが実行され、reviewsテーブルのレコードが削除されることがわかります。
本来であれば、入力値は下記のように正しくエスケープされるはずです。
貼\';DELETE FROM reviews--
しかし、PHPのaddslashes関数が誤動作を起こし、実際には下記のように扱われます。
貼\\';DELETE FROM reviews--%'
これは、「貼」の文字コードの2バイト目に起因する問題です。「貼」の文字コードは16進数で「935C」ですが、この2バイト目
この記事は会員限定です。会員登録をすると続きをお読みいただけます。
ログイン / 新規登録