來源:實驗樓php
最爲經典的單引號判斷法: 在參數後面加上單引號,好比:spa
http://xxx/abc.php?id=1'
若是頁面返回錯誤,則存在 Sql 注入。 緣由是不管字符型仍是整型都會由於單引號個數不匹配而報錯。code
一般 Sql 注入漏洞分爲 2 種類型:字符串
當輸入的參 x 爲整型時,一般 abc.php 中 Sql 語句類型大體以下: select * from <表名> where id = x
這種類型可使用經典的 and 1=1
和 and 1=2
來判斷:string
http://xxx/abc.php?id= x and 1=1
頁面依舊運行正常,繼續進行下一步。http://xxx/abc.php?id= x and 1=2
頁面運行錯誤,則說明此 Sql 注入爲數字型注入。緣由以下: 當輸入 and 1=1
時,後臺執行 Sql 語句:class
select * from <表名> where id = x and 1=1
沒有語法錯誤且邏輯判斷爲正確,因此返回正常。後臺
當輸入 and 1=2
時,後臺執行 Sql 語句:select
select * from <表名> where id = x and 1=2
沒有語法錯誤可是邏輯判斷爲假,因此返回錯誤。 咱們再使用假設法:若是這是字符型注入的話,咱們輸入以上語句以後應該出現以下狀況:語法
select * from <表名> where id = 'x and 1=1' select * from <表名> where id = 'x and 1=2'
查詢語句將 and 語句所有轉換爲了字符串,並無進行 and 的邏輯判斷,因此不會出現以上結果,故假設是不成立的。查詢
當輸入的參 x 爲字符型時,一般 abc.php 中 SQL 語句類型大體以下: select * from <表名> where id = 'x'
這種類型咱們一樣可使用 and '1'='1
和 and '1'='2
來判斷:
http://xxx/abc.php?id= x' and '1'='1
頁面運行正常,繼續進行下一步。http://xxx/abc.php?id= x' and '1'='2
頁面運行錯誤,則說明此 Sql 注入爲字符型注入。同理