PHP逆引き大全 516の極意

セキュアプログラミングの極意 - Tips452 文字コードの特徴を利用したSQLインジェクションを理解する

登録タグ
PHP
Icon comment count 0
Icon stock count 0

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バイト目

出典情報

Medium

PHP逆引き大全 516の極意

  • 著者: 大家 正登, 茂木 健一, 鮫島 康浩, 谷中 志織

コメント

    コメントはありません