MySql 數字與字符串比較

在做Sqli-labs的一道題時,在查詢的變量後面添加單引號時不報錯,添加雙引號時報錯,查看後臺語句是這樣的:

首先需要知道的是,在mysql中,單雙引號的作用是相同的,在單雙引號互相嵌套的時候,內部是直接當作變量的。

雙引號報錯是因爲雙引號匹配不完整,單引號這裏不報錯是應該的,但是單引號此時在語句中是作爲字符串的一部分,理應查詢到的是一個空集,但實際情況卻是與不加單引號的結果一樣。

通過查看數據庫定義發現id字段是int類型,也就是題目裏構造的sql語句是用字符串變量去和int類型做比較,做實驗如下:

也就是說,在mysql中做字符串與數字的比較時,會自動從第一個非數字的字符開始截斷,將截斷點前的字符串轉換爲數字,繼而進行比較。

 

發佈了5 篇原創文章 · 獲贊 1 · 訪問量 846
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章