如何建站CMS系统
最早想到利用数据库系统来写文件大约MySQL下面的事情吧,我记得有篇经典的贴子是讲利用TCP反弹结合输入法漏洞入侵的,第一步,也是很重要的一步就是利用了MySQL导出表到文件获得了一个web上的shell。ACCESS功能不那么强大,有注入漏洞的时候也不能直接获得执行任何命令的权限,就不说了;MSSQL倒是有很多人详细研究
操作方法
- 01
执行命令的方法罗列了很多,可是没有了exec的权限,所做的还是有限。很多人就在问,MSSQL下面能不能导出一张表到文件,就像MySQL那样子,至少先获得一个低权限的shell来看看,我找来找去也没有找到导出表的命令,只好另想方法--不能导出表,那就只好导出数据库了,效果嘛,大部分情况下还是一样的
- 02
在说明做法前,还是先来看看为什么可以。IIS在通过asp.dll处理.asp扩展名文件的时候,对<%%>以外的内容,不做任何处理就直接输出,比如拷贝一个.exe文件到web发布目录,改扩展名为.asp后在IE中请求,返回来的结果是多半是.exe文件的内容,而不会是一个500服务器内部错误。而对于<%%>括起来的内容,默认情况下是按照VBscripqs的方式解释执行后给出结果,如果<%%>里面的内容有语法错误,才会出现常见的500服务器内部错误。
- 03
用文本的方式打开这个文件。通过上面的分析,我们只要知道默认的情况下,如果把这个文件改扩展名为.asp后,请求时会不会出现问题,于是我们查找是否存在<%和%>,呵呵,显然是没有的吧,也就是说我们的请求会返回文本方式的内容。
。
- 01
首先是默认的导出文件不会导致解释执行时的错误,这是很关键的一步,剩下的就是我们要让他变为一个shell,当然是做一个表进去了,表的内容在备份的时候一定会被存储到备份文件中去的,我们可以控制表的内容,自然也可以控制备份文件的内容。
- 02
到这里可能有人已经想一股脑儿把经典的asp shell的内容写入新建的表然后backup database了,嗯,还没有那么简单,你这样做了的话,如果还想继续我们的实验,那可能要花上重装MSSQL的代价。对于文本类型等的数据,比如text,nvchar等,在数据库中可能的形式是"abc",但是在导出文件中,已经变成了宽字符的形式,成了"a b c ",这样子的话,即使你好心写的是一个"<%",到了备份文件中,一样的成了"< % ",里面的内容更是乱七八糟,根本不会被解释执行了。
- 03
为了避免这种情况,我们创建的表列项应该是一个二进制形式的,比如属性为image,这样子,在里面添加的内容,原来是什么导出的备份文件中也就是什么,规规矩矩的,一点都不会变了。