【5】web安全入門篇-MYSQL數據庫

0x01 mysql介紹

MySQL是一個關係型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下產品。MySQL 是最流行的關係型數據庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關係數據庫管理系統) 應用軟件
MySQL是一種關係數據庫管理系統,關係數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度並提高了靈活性
MySQL所使用的 SQL 語言是用於訪問數據庫的最常用標準化語言。MySQL 軟件採用了雙授權政策,分爲社區版和商業版,由於其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,一般中小型網站的開發都選擇 MySQL 作爲網站數據庫。
一般與PHP搭配,運行在Apache服務器上

0x02 mysql結構

在這裏插入圖片描述

0x03 mysql常規操作

1. 創建

1.1 創建數據庫

create database 數據庫名;

在這裏插入圖片描述
在這裏插入圖片描述
可以看到數據庫已經創建成功。在這裏出來我創建的數據庫還有幾個mysql自帶的數據庫,分別是information_schema,mysql,performance_schema
information_schema:information_schema數據庫是MySQL系統自帶的數據庫,它提供了數據庫元數據的訪問方式,如能在這個數據庫裏面查詢mysql中的數據庫名,表名,字段名,外鍵關係等(該表在mysql5.0以下的版本是不存在的)
mysql:主要用於mysql數據庫用戶名,密碼,權限等的管理,如可以在該數據庫裏面更改密碼,更改用戶權限等
performance_schema:mysql 5.5 版本 新增了一個性能優化的引擎,該功能默認關閉的。

1.2 創建表

create table 表明(
字段名 數據類型 附加信息
)表附加信息;

create table test(
id int primary key auto_increment not null,
csdn varchar(255) default null
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

這裏的例子,創建一個表名爲test,裏面有兩個字段ID和csdn,id是整型,主鍵,自增,不能爲空;csdn字段爲字符類型,默認爲空;表附加信息爲關係類型爲InnoDB,默認編碼方式爲UTF-8,自增起始值爲1
在這裏插入圖片描述
創建成功我們查看下
在這裏插入圖片描述

2. 增

插入語句語法爲

insert into 表名 (字段名1,字段名2,...) values (值1,值2,...); 

insert into test (csdn) values ('gr3enh4nd');

在這裏插入圖片描述
插入成功

3. 查

基礎查詢語句

select 字段名 from 表名;

字段名可以用 * 替換,表示查詢表中所有字段。
在這裏插入圖片描述
在這裏插入圖片描述
這裏除了簡單查詢以外還有子查詢,複合查詢,這裏我就不講解了,講解的話太多了,複合查詢和子查詢可以簡單瞭解下,需要使用時再按照語法構造
limit 限制查詢條數
語法

select * from 表名 limit 起始值,偏移量;

select * from test limit 0,1;

在這裏插入圖片描述
這裏就是查詢test表,第一條數據

4. 改

語法,介紹update語句需要介紹where
where 附加到語句最後限定語句範圍
update 語法

update 表名 SET 字段名 = 更新值 where 限定字段名 = 限定值;

update test SET csdn = 'changge' where id = 1;

在這裏插入圖片描述
在這裏插入圖片描述
這裏id爲1的字段內容被更改了

5. 刪

5.1 刪除數據庫和表

dorp table 表名/ drop database 數據庫名

drop table test / drop database csnd

5.2 刪除內容

delete from 表名 where 限定條件

delete from test where id =1

刪除test表中,id等於1的那條記錄

0x04 mysql在web安全中常用的函數

1. concat

將多個字符串連接爲一個字符串,返回結果爲連接參數產生的字符串。如有任何一個參數爲NULL ,則返回值爲 NULL。或許有一個或多個參數。 如果所有參數均爲非二進制字符串,則結果爲非二進制字符串。 如果自變量中含有任一二進制字符串,則結果爲一個二進制字符串。一個數字參數被轉化爲與之相等的二進制字符串格式
在這裏插入圖片描述

2. if

語法

if(exp1,exp2,exp3)

參數解釋:
如果expr1的值爲true,則返回expr2的值,如果expr1的值爲false,則返回expr3的值
在這裏插入圖片描述

3. sleep()

等待一段時間,時間單位爲秒
在這裏插入圖片描述

4. 幾個報錯注入的函數

博客上介紹得比較全
重點看floor,updatexml,extractvalue

5. 文件操作函數

5.1 load_file()

讀文件函數

 select load_file('文件路徑');

select load_file('/etc/passwd');

使用該函數有個條件是,mysql用戶需要有file權限

5.2 into outfile函數

導出到文件

select ... into outfile '文件路徑';

可以用來導出一句話

5.3 into dumpfile

同樣導出到文件

select ... into dumpfile '文件路徑';

這兩個函數得區別:

outfile函數可以導出多行,而dumpfile只能導出一行數據
outfile函數在將數據寫到文件裏時有特殊的格式轉換,而dumpfile則保持原數據格式

導出庫適合用outfile
在udf提權時,導出udf.dll二進制文件時適合用dumpfile

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章