SQL注入基礎

2021-10-08 10:02:29 字數 1002 閱讀 2682

為了堅持而堅持,是撐不了多久的。

sql注入就是指web應用程式對使用者輸入資料的合法性沒有判斷,前端傳入後端的引數是攻擊者可控的,並且引數代入資料庫查詢,攻擊者通過把sql命令插入到web表單提交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令。

sql注入漏洞的產生要滿足兩個條件

以sqllab為例

當傳入的id引數為1'時,資料庫執行的**為

這不符合資料庫語法規範,所以會報錯,當傳入id引數為1 and 1 =1時,執行的sql語句為

select * from users where id =1 and 1=1

因為1=1為真,id=1也為真,兩者相與,也為真,所以頁面會返回與id=1相同的結果。

當傳入id引數為and 1=2時,由於1=2為假,所以返回結果為假,由此可以判斷該引數為注入點。

select mid(column_name,start[,length]) from table_name;
column_name 必需。要提取字元的字段。

start 必需。規定開始位置(起始值是 1)。

length 可選。要返回的字元數。如果省略,則 mid() 函式返回剩餘文字。

eg:mid(username,1,3)   提取username列中的前3個字元,username="123456" ,則輸出結果為123

left (string, n) string為要擷取的字串,n為長度。

eg: left(username,2)   username="123456"  ,輸出結果為12

sql注入基礎

mysqli 轉義字串函式 mysqli real escape string db,string mysqli 預編譯 拼裝sql語句 把要進行的操作的sql語句提前寫好,把需要改變的元素變成佔位符 select id,username from user where user name and ...

SQL注入基礎

最為經典的單引號判斷法 在引數後面加上單引號,比如 abc.php?id 1 如果頁面返回錯誤,則存在 sql 注入。原因是無論字元型還是整型都會因為單引號個數不匹配而報錯。如果未報錯,不代表不存在 sql 注入,因為有可能頁面對單引號做了過濾,這時可以使用判斷語句進行注入。其實所有的型別都是根據資...

SQL注入基礎

函式名稱 系統使用者名稱 system user 系統使用者名稱 user 使用者名稱current user 當前使用者名稱 session user 連線資料庫的使用者名稱 database 資料庫名 version 資料庫版本 datadir 資料庫路徑 basedir 資料庫安裝路徑 ver...