來自:https://www.cnblogs.com/ichunqiu/p/5749347.html
首先我們需要了解數據是通過什么方式進行輸入,這里我總結了三個:
- GET請求:該請求在URL中發送參數。(https://i.cnblogs.com/EditPosts.aspx?opt=1)opt=1就是輸入的參數
- POST請求:數據被包含在請求體中。
- 其他注入型數據:HTTP請求的其他內容也可能會觸發SQL注入漏洞。
我們先在參數后面加個單引號,如:本應該輸入1,我們給他輸入1' ,結果查詢語句變為:select * from users where id = 1';
sql語句執行失敗,所以執行結果會返回一個布爾值,即執行的mysql_query的結果為bool(false)
為了更好的了解MySQL錯誤,我們在
$sql = mysql_query($querry,$con);
后面加上
if(!$sql) { die('<p>error:'.mysql_error().'</p>'); }
這樣當應用捕獲到數據庫錯誤且SQL查詢失敗時,就會返回錯誤信息:(我們在參數中添加單引號返回的錯誤信息)
error:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1
然后借助這些錯誤,我們這可以推斷應該存在SQL注入。
