Web5: SQL インジェクション - フィルタリング メカニズムをバイパスするためのいくつかのテクニック

Web5: SQL インジェクション - フィルタリング メカニズムをバイパスするためのいくつかのテクニック

1. クエリの内容を切り詰める

クエリ内のスクリプトを無視したい場合。たとえば、以下の処理の場合、クエリには条件 active=1 が必要ですが、コメント (--、--、-+、#、/*、/**/、// 、;%00…) およびそれを無視します。マイニングの場合、クエリの残りのコンテンツが何をしているのかわからないことが多いため、この場合のコメントの使用は非常に効果的です。

Web5: SQL インジェクション - フィルタリング メカニズムをバイパスするためのいくつかのテクニック

コメント後のクエリは次のようになります。

Web5: SQL インジェクション - フィルタリング メカニズムをバイパスするためのいくつかのテクニック

2. キーワードフィルタリングをバイパスする

a.インラインコメント

インライン コメントは、空白フィルタリングをバイパスするために非常に効果的に使用されます。次の文字を使用すると、空白フィルタリングをバイパスできます: /**/、%20、%09、%0a、%0b、%0c、%0d、%a0)。例えば:

Web5: SQL インジェクション - フィルタリング メカニズムをバイパスするためのいくつかのテクニック

または、キーワード フィルタリングをバイパスします (MySql で利用可能)。以下の例では、union キーワードとpassword キーワードがブラックリストに含まれているためブロックされています。

Web5: SQL インジェクション - フィルタリング メカニズムをバイパスするためのいくつかのテクニック

b.キーワードを置換する

SQL インジェクションを悪用するときは、 union、select、information_schema などのキーワードをよく使用します。多くの場合、プログラマはこれらのキーワードを単純に置き換えます。

Web5: SQL インジェクション - フィルタリング メカニズムをバイパスするためのいくつかのテクニック

上記の処理コードが不足していることが簡単にわかります。単純なパターン マッチングの場合、バイパスは非常に簡単です。大文字と小文字が異なるように解釈される、大文字と小文字の区別を適用しましょう。

キーワードを使用する代わりに、次のようにします。

select, union…

我々は使用するだろう:

SeLEcT, UniOn…

このバイパスの基礎は、データベース管理システムが case と case キーワードを区別しないことです。

場合によっては、Web アプリケーションは特定のキーワード (union、select...) のすべてまたは一部をフィルターで除外します。次のようにバイパスします。

id=1+uniunionon+SeLselectecT+1,2,3-- -

Union と select が Web アプリケーションによって除外されると、次のような正しいクエリが残ります。

id=1+union+SeLecT+1,2,3-- -

c.文字コード

WAF (Web アプリケーション ファイアウォール) がキーワードをブロックする場合、キーワードをエンコードすることで回避できます。多くの WAF アプリケーションはクエリを 1 回だけデコードし、ブラックリスト内のキーワードをフィルターで除外します。その後、リクエストを 2 回エンコードして、この場合はバイパスできるようにします。

Web5: SQL インジェクション - フィルタリング メカニズムをバイパスするためのいくつかのテクニック

3. ブロックの一重引用符と二重引用符をバイパスする

- このバイパスについて具体的に学ぶ前に、例を見てみましょう。

Web5: SQL インジェクション - フィルタリング メカニズムをバイパスするためのいくつかのテクニック

このシナリオでは、データベースに users という名前のテーブルがあります。次の仕事は、テーブル内の列名を調べてその情報を取得することです。上記のクエリと同様に、条件 table_name='users' を使用します。しかし、一重引用符 (') と二重引用符 (") の両方が WAF によってブロックされている場合、「ユーザー」または「ユーザー」を使用できなくなります。では、この問題をどのように解決するのでしょうか? 組み込みのデータベース システムには、次のような機能があります。この問題は、CHAR( ) 関数 (Oracle の場合は CHR()) で非常によく解決されます。たとえば、上記のクエリでは次のようにバイパスします。

Web5: SQL インジェクション - フィルタリング メカニズムをバイパスするためのいくつかのテクニックWeb5: SQL インジェクション - フィルタリング メカニズムをバイパスするためのいくつかのテクニック

PHP プログラマーは、addslashes() 関数に精通しています。 addslashes() 関数には、データベース管理システムを支援するために、一重引用符 (')、二重引用符 (")、バックスラッシュ (\)、NUL (ヌル バイト) 文字「\」などの特殊文字の前に追加する効果があります。これらの文字を含む文字列を処理するときに、困難や混乱はありませんか? したがって、スクリプトに従ってクエリに挿入したい場合: name='someName' または '1'='1' -- 結果は、期待したものと異なります。

ただし、addslashes() 関数をバイパスして一重引用符文字 (') を挿入する手法があります。この手法はかなり前から公開されていますが、Web サイトに適用されるコーディング スタイルに関連付けられているため、この手法を実装するのは非常に困難です。

4.「操作 UNION の照合順序が不正に混在しています」エラーを回避します。

一部の管理システム (MySql でよく見られる) では、データベースとテーブルが照合順序に設定されている場合、UNION キーワードを使用すると、「操作 UNION の照合順序が不正です」というエラーが報告されます。照合順序の設定は、データベース設計者の意図による場合もあれば、MySql のデフォルト設定による場合もあります。 Union を使用する場合は、各フィールドの値の選択条件に対応するコード タイプが定義されていることを確認する必要があります。私の意見では、このエラーは、特に Apache MySql を実行している CMS で非常に一般的です。詳細については、http://bugs.mysql.com/bug.php?id=57926 を参照してください。
この場合、適切なエンコーディング タイプに変換する方法を使用できます。

たとえば、次のような場合です。

Web5: SQL インジェクション - フィルタリング メカニズムをバイパスするためのいくつかのテクニック

たとえば、上記のクエリで、column1 の照合順序が Unicode-UTF8 または _latin1 に設定されている場合、column2 から選択された内容を対応するコードに変換する必要があります。次のようにスタイルを強制できます。

Web5: SQL インジェクション - フィルタリング メカニズムをバイパスするためのいくつかのテクニック

このバイパス方法には欠点があります。照合コードが _latin1 であることを知っておく必要があります。私の意見では、これを回避するより良い方法は、16 進数および非 16 進数のエンコードおよびデコード関数を使用することです。

Web5: SQL インジェクション - フィルタリング メカニズムをバイパスするためのいくつかのテクニック

hex および unhex の代わりに使用できる関数は他にもたくさんあります。


Windows 10で欠落しているデフォルトの電源プランを復元する方法

Windows 10で欠落しているデフォルトの電源プランを復元する方法

このガイドでは、Windows 10でデフォルトの電源プラン(バランス、高パフォーマンス、省電力)を復元する方法を詳しく解説します。

Windows 10 で BlueStacks 5 の仮想化 (VT) を有効にする方法

Windows 10 で BlueStacks 5 の仮想化 (VT) を有効にする方法

仮想化を有効にするには、まず BIOS に移動し、BIOS 設定内から仮想化を有効にする必要があります。仮想化を使用することで、BlueStacks 5 のパフォーマンスが大幅に向上します。

WiFi接続に接続する際のドライバーの切断を修正

WiFi接続に接続する際のドライバーの切断を修正

WiFi 接続に接続するときにドライバーが切断されるエラーを修正する方法を解説します。

Windows での DIR コマンドの使用方法

Windows での DIR コマンドの使用方法

DIR コマンドは、特定のフォルダーに含まれるすべてのファイルとサブフォルダーを一覧表示する強力なコマンド プロンプト コマンドです。 Windows での DIR コマンドの使用方法を詳しく見てみましょう。

ソフトウェアを使わずに Windows 10 アプリをバックアップおよび復元する方法

ソフトウェアを使わずに Windows 10 アプリをバックアップおよび復元する方法

ソフトウェアなしで Windows 10 アプリをバックアップし、データを保護する方法を説明します。

Windows でローカル グループ ポリシー エディターを開くための 11 のヒント

Windows でローカル グループ ポリシー エディターを開くための 11 のヒント

Windows のローカル グループ ポリシー エディターを使用して、通知履歴の削除やアカウントロックの設定を行う方法を説明します。

最高の IP 監視ツール 10 選

最高の IP 監視ツール 10 選

重要なリソースを簡単に監視及び管理できる<strong>IP監視</strong>ソフトウェアがあります。これらのツールは、ネットワーク、インターフェイス、アプリケーションのトラフィックをシームレスに確認、分析、管理します。

AxCrypt ソフトウェアを使用してデータを暗号化する方法

AxCrypt ソフトウェアを使用してデータを暗号化する方法

AxCrypt は、データの暗号化に特化した優れたソフトウェアであり、特にデータ セキュリティに優れています。

Windows 10 Creators Updateのアップデート後にシステムフォントを変更する方法

Windows 10 Creators Updateのアップデート後にシステムフォントを変更する方法

システムフォントのサイズを変更する方法は、Windows 10のユーザーにとって非常に便利です。

Windows 10で機内モードをオフにできないエラーを修正する方法

Windows 10で機内モードをオフにできないエラーを修正する方法

最近、Windows 10にアップデートした後、機内モードをオフにできない問題について多くのユーザーから苦情が寄せられています。この記事では、Windows 10で機内モードをオフにできない問題を解決する方法を説明します。