日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

SQL注入 ——sql数据库操作基础(一)

發(fā)布時(shí)間:2023/12/18 数据库 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL注入 ——sql数据库操作基础(一) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本章目的

普及MySQL( MariaDB)藪據(jù)庫(kù)的基礎(chǔ)與進(jìn)階語(yǔ)法,加深對(duì)SQL命令語(yǔ)句的理解,為后續(xù)SQL注入攻擊與防護(hù)實(shí)驗(yàn)打下堅(jiān)實(shí)的基礎(chǔ)。

基本概念

數(shù)據(jù)庫(kù)分類

關(guān)系型數(shù)據(jù)庫(kù)

●關(guān)系型數(shù)據(jù)庫(kù)模型是把復(fù)雜的數(shù)據(jù)結(jié)構(gòu)歸結(jié)為簡(jiǎn)單的二元關(guān)系(即二維表格形式)。通過(guò)SQL結(jié)構(gòu)化査詢語(yǔ)句存儲(chǔ)數(shù)據(jù),保持?jǐn)?shù)據(jù)一致性,遵循ACID理論。關(guān)系型數(shù)據(jù)庫(kù)的典型產(chǎn)品: MySQL、PostgreSQL、IBM DB2、 Accesss、 Microsoft SQL Server、 Oracle、

非關(guān)系型數(shù)據(jù)庫(kù)

●非關(guān)系型數(shù)據(jù)庫(kù)也被成為 NOSQL數(shù)據(jù)庫(kù), NOSQLI的本意是“ Not Only SQL”指的是非關(guān)系型數(shù)據(jù)庫(kù),而不是“ NO SQL的意思。因此, NOSQL的產(chǎn)生并不是要徹底地否定關(guān)系型數(shù)據(jù)庫(kù),而是作為傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)的一個(gè)有效補(bǔ)充,NoSQL數(shù)據(jù)庫(kù)在特定的場(chǎng)景下可以發(fā)揮出難以想象的高效率和高性能。非關(guān)系型數(shù)據(jù)庫(kù)的典型產(chǎn)品: Memcached、 Redis、 mongo DB等

數(shù)據(jù)庫(kù)是典型web應(yīng)用的核心,通過(guò)各種web應(yīng)用保持聯(lián)系,相互配合,構(gòu)成web服務(wù)器與web客戶端以http,https等協(xié)議相互交流。

常見(jiàn)名詞

■數(shù)據(jù)庫(kù)( Data Base,DB):存儲(chǔ)在磁帶、磁盤、光盤或其他外存介質(zhì)上、按一定結(jié)構(gòu)組織在一起的相關(guān)數(shù)據(jù)的集合。

■數(shù)據(jù)庫(kù)管理系統(tǒng)( DataBase Management System,DBMs):一種操縱和管理數(shù)據(jù)庫(kù)的大型軟件,用于建立、使用和維護(hù)數(shù)據(jù)庫(kù)。

■數(shù)據(jù)庫(kù)系統(tǒng)( Data Base System,DBs):通常由軟件、數(shù)據(jù)庫(kù)(DB)和數(shù)據(jù)庫(kù)管理員組成。軟件主要包括操作系統(tǒng)、各種宿主語(yǔ)言、實(shí)用程序以及數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)

■數(shù)據(jù)庫(kù)(DB)由數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)統(tǒng)一管理,數(shù)據(jù)的插入、修改和檢索均要通過(guò)數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)進(jìn)行。數(shù)據(jù)庫(kù)管理員負(fù)責(zé)創(chuàng)建、監(jiān)控和維護(hù)整個(gè)數(shù)據(jù)庫(kù),使數(shù)據(jù)能被任何有權(quán)使用的人有效使用

■ACID理論

>原子性( Atomicity):事務(wù)是一個(gè)不可分割的單位,事務(wù)中的操作要么都發(fā)生,要么都不發(fā)生。

>一致性( Consistency):事務(wù)前后數(shù)據(jù)的完整性必須保持一致。

>隔離性( Isolation):多個(gè)用戶并發(fā)訪問(wèn)數(shù)據(jù)庫(kù)時(shí),數(shù)據(jù)庫(kù)為每一個(gè)用戶開(kāi)啟的事務(wù),不能被其他事務(wù)的操作數(shù)據(jù)所干擾,多個(gè)并發(fā)事務(wù)之間要相互隔離

>持久性( Durability):一個(gè)事務(wù)一旦被提交,它對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的改變就是永久性的,接下來(lái)即使數(shù)據(jù)庫(kù)發(fā)生故障也不應(yīng)該對(duì)其有任何影響。

按排名簡(jiǎn)單介紹下各大數(shù)據(jù)庫(kù)

Oracle
甲骨文公司的一款關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。它是在數(shù)據(jù)庫(kù)領(lǐng)域一直處于領(lǐng)先地位的產(chǎn)品。可以說(shuō)Oracle是目前世界上功能最強(qiáng)大、最復(fù)雜、市場(chǎng)占比最高的商業(yè)數(shù)據(jù)庫(kù)產(chǎn)品,適用于各類大、中、小、微機(jī)環(huán)境。它是一種高效率、可靠性好的適應(yīng)高吞吐量的數(shù)據(jù)庫(kù)解決方案。從架構(gòu)到運(yùn)維,可以說(shuō)是最難的數(shù)據(jù)庫(kù),學(xué)習(xí)和使用難度較高

?MySQL
MySQL是當(dāng)今最受歡迎的開(kāi)源SQL數(shù)據(jù)庫(kù)管理系統(tǒng),它由瑞典MySQLAB開(kāi)發(fā)發(fā)布和支持。MySQLAB是一家基于MySQL開(kāi)發(fā)人員的商業(yè)公司,它是一家使用了一種成功的商業(yè)模式來(lái)結(jié)合開(kāi)源價(jià)值和方法論的第二代開(kāi)源公司。MySQL是現(xiàn)在非常流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),尤其在Web應(yīng)用方面,是最好的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)應(yīng)用軟件之一。

Microsoft SaL Server (MSSQL)
SQLServer是Microsoft推出的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),具有使用方便可伸縮性好與相關(guān)軟件集成程度高等優(yōu)點(diǎn),從舊版本的個(gè)人電腦到運(yùn)行MicrosoftWindowsserver的大型多處理器的服務(wù)器都可以使用。老版本只能在Windows上運(yùn)行,從SQLServer2017版本起可以在Linux上運(yùn)行。

PostgresQL

PostgresQL是加州大學(xué)伯克利分校計(jì)算機(jī)系開(kāi)發(fā)的開(kāi)源對(duì)象關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(ORDBMS),穩(wěn)定性極強(qiáng),用于安全地存儲(chǔ)數(shù)據(jù)。

還有 Memcached(Memcached之反射拒絕服務(wù)攻擊技術(shù))、Redis(Redis未授權(quán)訪問(wèn)漏洞)、mongoDB(MongoDB遠(yuǎn)程代碼注入漏洞)。。。

國(guó)內(nèi)自主研發(fā)的關(guān)系型數(shù)據(jù)庫(kù)
>達(dá)夢(mèng)(DM):由華中理工馮玉才教授創(chuàng)辦,完全自主研發(fā),以O(shè)racle為參照、追趕
對(duì)象。
>人大金倉(cāng)(Kingbase):由人民大學(xué)王珊教授創(chuàng)辦,自主研發(fā)。普通的關(guān)系型數(shù)據(jù)
庫(kù)。
>神舟通用(OSCAR):神舟集團(tuán)與南大通用合作開(kāi)發(fā)的關(guān)系型數(shù)據(jù)庫(kù),更多地用于
數(shù)據(jù)分析領(lǐng)域。
>南大通用(GBase):南開(kāi)大學(xué)的背景,2010年左右自主研發(fā)的基于列式存儲(chǔ)、面
向數(shù)據(jù)分析、數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)庫(kù)系統(tǒng)。

■識(shí)別數(shù)據(jù)庫(kù)方法
>盲跟蹤
Web應(yīng)用技術(shù)
不同數(shù)據(jù)庫(kù)SQL語(yǔ)句差異
>非盲跟蹤
報(bào)錯(cuò)、直接查詢

■各大數(shù)據(jù)庫(kù)默認(rèn)端口號(hào)
Oracle: 1521
MySQL:3306
SQL Server: 1433
PostgresQL:5432
mongoDB:27017
Redis: 6379
DM:5236

MemcacheDB: 11211

■常見(jiàn)數(shù)據(jù)庫(kù)的版本查詢方法區(qū)別
> MSSQL
select @@version
> MySQL
select version() / select @@version
> Oracle
select banner from v$version
> PostgreSQL
select version()

■注意:不同數(shù)據(jù)庫(kù)處理包括而不限于長(zhǎng)度、各部位截取、以及字符串鏈接都是不同的

各數(shù)據(jù)庫(kù)與網(wǎng)頁(yè)編程語(yǔ)言的搭配
常見(jiàn)的搭配:
ASP和.NET: Microsoft SQL Server
PHP: MySQL、 PostgreSQL
Java: Oracle、 MySOL

■SQL語(yǔ)法基礎(chǔ)
用于與關(guān)系型數(shù)據(jù)庫(kù)交互的標(biāo)準(zhǔn)SQL命令有
CREATE、SELECT、INSERT、UPDATE、DELETE和DROP
分為三組
1.數(shù)據(jù)定義(Create、Drop)
2數(shù)據(jù)操縱(Select、Insert、Update、Delete)
3.數(shù)據(jù)控制(Grant、Revoke)

基礎(chǔ)命令(CUD)
CREATE
創(chuàng)建新的表、視圖或其他數(shù)據(jù)庫(kù)中的對(duì)象
ALTER
修改現(xiàn)存數(shù)據(jù)庫(kù)對(duì)象,比如一張表
DROP
刪除表、視圖或者數(shù)據(jù)庫(kù)中的其他對(duì)象
SELECT
從一張或者多張表中檢索特定的數(shù)據(jù)
INSERT
創(chuàng)建一條新記錄
UPDATE
修改記錄
DELETE
刪除記錄
GRANT
賦予用戶特權(quán)
REVOKE
收回賦予用戶的特權(quán)

操作環(huán)境

(1)操作系統(tǒng): win10

(2)安裝的應(yīng)用軟件: Apache、MySQL(MariaDB)、PHP;DVWA、SQLi-Labs、

Webug3.0漏洞網(wǎng)站環(huán)境

MySQL( MariaDB)數(shù)據(jù)庫(kù)帳號(hào)root,密碼為root

實(shí)驗(yàn)原理

MySQL( MariaDB)數(shù)據(jù)庫(kù)基本命令的功能

實(shí)驗(yàn)步驟

第一部分: MySQL( MariaDB)基礎(chǔ)操作

1.連接數(shù)據(jù)庫(kù)

(1)本地連接

輸入命令:

mysql -u root -p mysql -hlocalhost -u root -p mysql -h127.0.0.1 -u root -p mysql -h ip(本地)-u root -p

若其因ip未授權(quán)而登不上mysql則報(bào)錯(cuò)'FPPP'

只需添加上即可:

grant all privileges on *.* to root@"需登ip" identified by "666666";

密碼666

flush privileges;

立刻生效

select user,password,host from user;

??查看:

(2)遠(yuǎn)程鏈接

(第三方軟件鏈接)php遠(yuǎn)程鏈接

mysql_connect(host,usemame,password,dbname,port,socket);

kali鏈接

mysql -h ip(目標(biāo)ip)-u root -p

若報(bào)錯(cuò):

grant all privileges on *.* to root@"%" identified by "666666";

同上即可。

或直接打開(kāi)

之后出現(xiàn)“ Enter password:"的提示,,輸入密碼即可登錄一般和賬號(hào)一樣為root。若密碼為空,則直接按下回車鍵登錄。——cmd的字體顏色永久改變

成功登錄數(shù)據(jù)庫(kù)后,會(huì)出現(xiàn)“ MariaDB[(none)]"的提示符。

注意:絕大部分SQL命令都以分號(hào)作為結(jié)束符,請(qǐng)不要遺漏!

3.新建數(shù)據(jù)庫(kù) studenta

命令

create database student;

新建成功后,可再次使用下列命令查看結(jié)果:

show databases;

?4.使用數(shù)據(jù)庫(kù) studenta

命令:

use studenta;

5.在數(shù)據(jù)庫(kù) studenta中創(chuàng)建表 result

命令:

create table result(id int(8), name varchar(20), city varchar (20), score int(5));

6.在表 result中增加數(shù)據(jù)

本步驟在 result中插入如下5行數(shù)據(jù):

命令:

insert into result(id, name, city, score) values(1,"wang","beijing",75);insert into result(id, name, city, score)values(3, "11","shanghai",80);insert into result(id, name, city, score) values(5, "chen","fuzhou",70);insert into result(id, name, city, score) values(2,"zhou","xian",90);insert into result(id, name, city, score) values(7,"han","guangzhou",65);

注意:如果數(shù)據(jù)是字符型( varchar),必須使用單引號(hào)或者雙引號(hào)包裹!

插入成功后,可用如下命令查詢 result表中的全部?jī)?nèi)容:

select from result;

7.在表 result中刪除1條數(shù)據(jù)

例如,刪除id=7的數(shù)據(jù),可使用以下命令:

delete from result where id=7;

刪除成功后,仍然可以用以下命令查看結(jié)果:

select from result;

8.修改表 result中的1條數(shù)據(jù)

例如,修改id=5的數(shù)據(jù),將其 score設(shè)置為666,可使用以下命令:

update result set score=666 where id=5;

?

修改成功后,仍然可以用以下命令查看結(jié)果:

select *from result;

9.查詢表 result中的數(shù)據(jù)

例如

select *from result;

查詢表中所有字段:

select name, score from result;

查詢表中的name和 score字段

select score from result where name="11";

//查詢name為1的學(xué)生的分?jǐn)?shù)

第二部分: My SQL( MariaDB)進(jìn)階操作

1. order by的用法

(1)將 result表中的數(shù)據(jù)按照分?jǐn)?shù)( score)從高到低進(jìn)行排序:

select *from result order by score desc;

其中,desc表示降序(遞減);如果從低到高(升序)進(jìn)行排列,則可以將desc

換成asc;如果不加此參數(shù),默認(rèn)情況下按升序方式排列。

?分別嘗試:

select id, name, score from result order by 1; select id, name, score from result order by 2;

?

正常顯示以name升序排列的結(jié)果:

select id, name, score from result order by 3;

正常顯示以 score升序排列的結(jié)果:

select id, name, score from result order by 4;

報(bào)錯(cuò)。

從以上結(jié)果可以總結(jié)出,對(duì)于以下命令:

select cl, c2,..., cn from result order by M;

order by后面的數(shù)字(M)必須小于或等于n(數(shù)據(jù)庫(kù)查詢的字段數(shù)),才能正常顯示。如果M>n,數(shù)據(jù)庫(kù)就會(huì)報(bào)錯(cuò)。可以利用這個(gè)特點(diǎn)判斷數(shù)據(jù)庫(kù)查詢的字段數(shù)。

2.imit的用法:

基本格式為

limit MN

//表示從第M1條數(shù)據(jù)開(kāi)始,順序往下查詢N條數(shù)據(jù)

limit

//表示查詢前M條數(shù)據(jù)

嘗試執(zhí)行以下兩條命令:

select *from result limit 0,2;

//查詢表中的前2條數(shù)據(jù)

select *from result limit 1,3;

//從第2條數(shù)據(jù)起,往下查詢3條數(shù)據(jù)的id、name和score字段

3.unionselect的用法
(1)分別嘗試:

select * from result union select 1,2,3,4;

此語(yǔ)句的查詢結(jié)果,即是select *from result和select 1.2,3.4查詢結(jié)果的拼接。

?(2)分別嘗試:

select id,name,score from result union select 1,2,3; select id,name,score from result union select 1,2; select id,name,score from result union select 1,2,3,4;

從以上結(jié)果可以總結(jié)

對(duì)于以select c1,c2,...cn from result union select d1,d2,...dm;后半句union select查詢的字段數(shù)(m)必須與前半句select查詢的字段數(shù)(n)相等,數(shù)據(jù)庫(kù)才能正常顯示結(jié)果。與order by相似,可以利用這個(gè)特點(diǎn)判斷數(shù)據(jù)庫(kù)查詢的字段數(shù)。

(3)嘗試:

select id,city from result where id=1 and 1=2 union select name,score from result;

前部否定,后部 則顯示

從以上結(jié)果可以總結(jié),在已知字段名的情況下,攻擊者只要將該字段置于任何能夠顯示的位置,就可以暴露該字段的值。

4.union select結(jié)合information_schema數(shù)據(jù)庫(kù)
MySQL(MariaDB)5.5以上版本自帶information_schema數(shù)據(jù)庫(kù),其中保存著關(guān)于MySQL服務(wù)器所維護(hù)的所有其他數(shù)據(jù)庫(kù)的信息,如數(shù)據(jù)庫(kù)名、數(shù)據(jù)庫(kù)的表、表欄的數(shù)據(jù)類型與訪問(wèn)權(quán)限等。可以把information_schema數(shù)據(jù)庫(kù)看作MySQL
(MariaDB)的”目錄”!
(1)嘗試執(zhí)行以下兩條語(yǔ)句:

show databases;

?

select schema_name from information_schema.schemata;

?結(jié)果相同

(2)嘗試執(zhí)行以下兩組語(yǔ)句:
第一組:

use studenta; show tables;

第二組:

select table_name from information_schema.tables where table_schema='studenta';

?依然相同

SQL高級(jí)操作:排序,分組,限定條數(shù)
排序order by
SELECT * FROM test_table ORDER BY userid;
分組group by
SELECT name,COUNT(+) FROM test_table GROUP BY name;
限定條數(shù)limit
SELECT*FROM test_tablelimit 0,10;
SELECT*FROM test_tablelimit1,5;
聯(lián)合查詢union select
SELECT*FROM test_table UNION SELECT1.2,3;

SOL注入-基干聯(lián)合查詢的POST注入

SQL注入-基于聯(lián)合查詢的字符型GET注入

SOL注入-基于聯(lián)合查詢的數(shù)字型GET注入_Gjqhs的博客-CSDN博客

MySQL中的“騷操作”

Notice: Undefined variable解決

...

關(guān)注我即刻查看其他包括而不限于SQL注入的文章[]~( ̄▽ ̄)~*

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的SQL注入 ——sql数据库操作基础(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。