SQL注入各種類の説明と利用(二)


3.一般的なWebサイトアーキテクチャ
一般的なフレームワークによって のタイプを判断することができます
asp + access

asp + mssql

asp.net + mssql

php + mysql

Jsp + oracle

Jsp + mysql

具体的にどのようなモデルを採用するかは、掃面ツールや、得られたウェブサイトのデフォルトエラー情報などで得る必要がある.
4.情報の取得、権限の付与
あるポイントに注入があることを知ってから、データベースの内容を取得するには、unionを使用します.UNION注入UNIONは、データベース管理者が頻繁に使用し、管理できる演算子の1つです.
2つ以上のSELECT文に接続できるクエリー結果
基本的な構文は次のとおりです.
SELECT colum1,colum2,colum3,…,columN FROM table1

UNION

SELECT colum1,colum2,colum3,…,columN FROM table2

アプリケーションが最初の(元の)クエリから得られたデータを返すと、最初のクエリの後にUNION演算子を注入し、別の任意のクエリを追加することで、データベース・ユーザーがアクセスできるテーブルを読み取ることができます.
もちろん、このような使いやすい文には制限があります.
使用UNIONデータルールの取得:
2つのクエリで返されるカラム数は同じでなければなりません
ふたつSELECT文が返すデータベースに対応するカラムは、同じタイプまたは互換性がある必要があります.
通常、終端注入の場合にのみ、より速く推測して利用できます.そうしないと、元のSQL文が便利に利用できることを知っておく必要があります.UNION文の構築
例:
0 x 01カラム数を決定するには:UNION SELECT null,null,null,…,null FROM dual
元の文に一致する列の数が正常に一致するまで、nullの数を徐々に増やします.
これは という原理を利用していますORDER BYを使用して原語文列の数を決定し、半減ルックアップ法を使用して推測効率を向上させることができます.
0 x 02カラムタイプを決定するには:UNION SELECT 1,’2’,null,…,null FROM dual
ここではまず最初の列を数字と推測し,戻り結果が正しくなければ文字と判断する.
それでも正しくない場合はnull(バイナリタイプである可能性がある)を維持し、その後、部分的または全タイプの判断を順次完了する
もちろん、どの方式にも当てはまらない場合がありますUnion適用されない場所
注入文は遮断できず、完全ではないSQLクエリー文WebページにはSQLクエリー文が2つあり、クエリー文の列数が異なります.