0x00序文
この時間は比較的忙しいため、ブログの更新も比較的遅くなります。私はもともと数日前にこのmssqlデータベースを送信したかったのですが、mssqlの構造はより複雑であり、それを使用する方法が他にもあるため、mssqlのデータベース構造とさまざまなタイプの使用方法について詳細に調査しました。 Zuoはいくつかの手動注射について詳しく調べていませんでした。
0x01 mssqlデータベースを理解する
ここで言及したmssqlはsqlserverデータベースです
マイクロソフトが米国で発売したリレーショナルデータベースシステム。SQL Serverは、分散クライアント/ サーバーコンピューティング用に設計された、スケーラブルで高性能なデータベース管理システムです。WindowsNTとの有機的な統合を実現し、トランザクションに基づくエンタープライズレベルの情報管理システムソリューションを提供します。 (1 )高性能設計は、WindowsNTの利点を最大限に活用できます。 (2 )高度なシステム管理、Windowsグラフィカル管理ツールのサポート、ローカルおよびリモートのシステム管理と構成のサポート。 (3 )データの整合性を保証するためにさまざまな方法を使用する強力なトランザクション処理機能。 (4)対称型マルチプロセッサ構造、ストアドプロシージャ、ODBCをサポートし、独立したSQL言語を備えています。SQLServerは、組み込みのデータ複製機能、強力な管理ツール、インターネットとの緊密な統合、オープンシステム構造により、ユーザー、開発者、システムインテグレーターに優れたデータベースプラットフォームを提供します。
上記は百度百科事典の情報です。
Mssqlとsqlserverは非常に異なり、sqlserverの構造はより複雑で、インジェクションステートメントもより複雑です。ただし、インジェクション中にデータベースがsaユーザーによって実行された場合、webshellを簡単に削除できます。mssqlは、ストアドプロシージャが直接コマンドを実行できるようにします。
mssqlシステム自体のデータベースの役割を見てみましょう。
マスターデータベースはすべてのオブジェクトの情報を保存し、saまたは他のユーザーのパスワードは暗号文
モデルで保存されます。ユーザーデータベース
msdb:ユーザーデータベースを作成するテンプレートがあります。これは、すべてのタスクスケジュールを保存する
tmpdb:一時データベース(インジェクション中に制限されている場合) 、テーブルに存在し、データをバーストします。再起動するとtempdbデータがクリアされます
データベースにはユーザー紹介が付属しています。
先頭の#記号はmssql内部ユーザーデータベース
であり、データベースのインストールの最初にntを使用してデータベースをインストールした場合にのみ作成されます。
msql実行コマンドがnt serivice \ mssqlserverサービスを使用してコマンドを実行する場合。
以下を見て、mysqlとの違いを見てみましょう。
select * from master.dbo.sysobjects where xtype = ' u ' ;
matsterは、データベース名のドットの後に、彼のアーキテクチャとテーブル名を続けて指定します。
それで、このデータベースにそのようなテーブルがないことを何で見つけましたか?
実際、これは私たちの見解であり、実際のテーブルではありません。
sysobjectsは、制約、デフォルト値、ログ、ルール、ストアドプロシージャなど、データベースで作成されたすべてのオブジェクトを格納するために使用されるシステムビューです。
xtypeは代表的なオブジェクトタイプです
。U:テーブル(ユーザー定義テーブル)
V:ビュー
P:ストアドプロシージャ
X:拡張ストアドプロシージャ
すべてのデータベース名を照会できます
select * from master..sysdatabases;
このクエリは、mssqlのビュー情報データベースでもあり、ビューの形式でも存在します。
駅の図書館が分かれているかどうかを確認する
および(host_name()を選択)=(@@ servernameを選択))
データベースの名前を照会します。この関数は、括弧内の数値をたどって対応するデータベース名を照会できます
SELECT DB_NAME();
ここで、mssql権限の分割が来ます。
sa:sysadminスーパー管理者権限 dbo:db_ownerデータベース管理者権限 public:アクセスユーザー権限
0x02ストアドプロシージャ
ストアドプロシージャ(Stored Procedure)は
、特定の機能を完了するための大規模なデータベースシステム内のSQLステートメントのセットであり、データベースに格納され、コンパイル後に永続的に有効に
なります。ユーザーは、ストアドプロシージャの名前を指定し、パラメーターを指定します(パラメータ付きのストアドプロシージャ)を実行します。
ストアドプロシージャは、データベースの重要なオブジェクトです。
特に大量のデータの場合、ストアドプロシージャを使用すると、倍速の効率向上を実現できます。
次に、ストアドプロシージャを使用して、実際の戦闘でcmdコマンドを直接実行できます。
一般的に使用されるストアドプロシージャは、xp_cmdshell、sp_oacreate、エコーなしのsp_oacreateストアドプロシージャ実行コマンドで、txtファイルに出力してから表示する必要があります。
00バージョンはxp_cmdshellのデフォルトバージョン05であり、手動で起動する必要があります。
0x03終了
この記事には3時間かかります。時間を記録してください。次の記事では、mssqlのさまざまな注入構文とバイパス手法について説明します