ホームページ  >  記事  >  データベース  >  SQLインジェクションの実行方法

SQLインジェクションの実行方法

(*-*)浩
(*-*)浩オリジナル
2019-05-18 10:14:5326571ブラウズ

いわゆる SQL インジェクションとは、Web フォームに SQL コマンドを挿入して、ページ リクエストのドメイン名やクエリ文字列を送信または入力し、最終的にはサーバーをだまして悪意のある SQL コマンドを実行させることです。

SQLインジェクションの実行方法

具体的には、既存のアプリケーションを利用して、(悪意のある) SQL コマンドをバックエンド データベース エンジンに挿入して実行する機能です。これは、Web フォーム Enter (悪意のある) SQL ステートメントを使用して、設計者が意図したとおりに SQL ステートメントを実行するのではなく、セキュリティの脆弱性のある Web サイト上のデータベースを取得します。たとえば、これまでの多くの映画やテレビの Web サイトでは、主に WEB フォームを通じてクエリ文字を送信することによって VIP メンバーのパスワードが漏洩していましたが、このようなフォームは特に SQL インジェクション攻撃に対して脆弱です。

SQL インジェクション技術

強制エラー生成

データベースの種類、バージョンなどの情報の識別がこの基礎となります。攻撃の種類 動機はそこにあります。他の種類の攻撃に備えてデータベースの種類や構造などの情報を収集することが目的であり、攻撃の前段階とも言えます。アプリケーション サーバーから返されるデフォルトのエラー メッセージを利用して、脆弱性情報を取得します。

非主流のチャネル テクノロジの使用

HTTP 応答に加えて、チャネルを通じてデータを取得できます。ただし、ほとんどのチャネルは、データベースによってサポートされる機能に依存して、したがって、このテクノロジーはすべてのデータベース プラットフォームに完全に適用できるわけではありません。 SQL インジェクションの非主流チャネルには主に電子メール、DNS、データベース接続が含まれます。基本的な考え方は、まず SQL クエリをパッケージ化し、次に非主流チャネルを使用して情報を攻撃者にフィードバックすることです。

特殊文字を使用する

さまざまな SQL データベースにはさまざまな特殊文字や変数があり、これらは安全に構成されていない、またはフィルタリングが不十分な一部のアプリケーション システムを通じて取得される可能性があります。さらなる攻撃への指示を提供する情報。

条件付きステートメントを使用する

この方法は、内容ベース、時間ベース、エラーベースの 3 つの形式に分類できます。通常、通常のアクセス後に条件文が追加され、情報のフィードバックに基づいて攻撃対象が決定されます。

ストアド プロシージャの使用

いくつかの標準ストアド プロシージャを通じて、データベース ベンダーがデータベースの機能を拡張する一方で、システムはデータベースと対話することもできます。一部のストアド プロシージャはユーザーが定義できます。他の種類の攻撃を通じてデータベースの種類や構造などの情報を収集した後、ストアド プロシージャを実行するコマンドを構築できます。このタイプの攻撃は、多くの場合、リモート コマンドの実行、権限の拡張、およびサービス妨害の目的を達成する可能性があります。

入力フィルタリング テクノロジを回避する

一部のフィルタリング テクノロジは、一般的なエンコーディングに対する SQL インジェクションを防ぐために使用できますが、この状況を回避する方法は多数あります。オープン フィルタリング、テクニカル一般にこれを実現できる手段には、SQL コメントと動的クエリの使用、切り捨ての使用、URL エンコードと null バイトの使用、大文字と小文字のバリアントの使用、ネストストリッピング後の式などが含まれます。これらの手段により、入力されたクエリは入力フィルタリングを回避できるため、攻撃者は目的のクエリ結果を取得できます。

推論テクノロジー

は、データベース スキーマを明確にし、データを抽出し、注入可能なパラメーターを識別できます。このタイプの攻撃は、Web サイトがユーザーに入力したフィードバック情報を使用して、注入可能なパラメーターとデータベース スキーマを推測します。この攻撃によって構築されたクエリを実行すると、得られる答えは true または false のみになります。推論に基づく注入方法は、大きく分けて「時限注入」と「ブラインド注入」の2種類に分けられます。前者はインジェクション文に「waitfor 100」などの文を追加し、インジェクションの成否判定やクエリ結果が現れた時刻からデータ値の範囲を導出する方法、後者は主に「and l=」などです。 l"、"、および l= 2" 2 つの古典的な注入方法。これらの手法はいずれも、間接的に関連する質問をして回答を得ることができ、その回答情報から目的の情報を推測して攻撃を実行します。

以上がSQLインジェクションの実行方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。