入侵html数据库,教你如何暴库(网站入侵)

教你如何暴库(网站入侵)

整理一些暴库知识

原理:

一、方式

暴库的方式有多种多样,我知道的就有3种以上,常见的暴的方法有:%5c类暴,conn.asp暴,ddos暴等等

二、原理

"%5c"暴库法,它不是网页本身的漏洞,而是利用了IIS解码方式中的一个特性,如果IIS安全设置不周全,而网页设计者未考虑IIS错误,就会被人利用。

为何要用"%5c"?它实际上是"\"的十六进制代码,也就是"\"的另一种表示法。在电脑中,它们是一个东东。

但提交"\"和"%5c"却会产生不同的结果,在ie中,我们把下面第一个地址中的"/"换成"\"提交:

_blank> http://hxhack.com/soft\view.asp?id=58

_blank> http://hxhack.com/soft%5cview.asp?id=58

二者的访问结果是一样的。ie会自动把"\"转变成"/",从而访问到同一地址。

但是,当我们把"/"换成十六进制写法"%5c"时,ie不会对此进行转换。地址中的"%5c"被原样提交了。

当IIS收到后解析时,又会将%5c还原成"\"。这样,iis中网址的相对路径就变成/Soft/html\13/。这一点很重要。问题正是从这里开始的。

在ASP网页中,凡调用数据库时,都会用到一个连接数据库的网页conn.asp,它会创建一个数据库连接对象,定义要调用的数据库路径

一个典型的conn.asp如下:

dim conn

dim dbpath

set conn=server.createobject("adodb.connection")

DBPath = Server.MapPath("admin/hack58.mdb")

conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath

%>

大家注意第4句:DBPath = Server.MapPath("admin/hack58.mdb"),Server.MapPath方法的作用是将网站中的相对路径转变成物理上的绝对路径。为何要这样?因为连接数据库时,须指明它的绝对路径。

(这里可能有人不明白,什么相对路径、绝对路径?IIS为了不让访问者知道真实的实际路径,并且确保网站不因变换地址而影响使用,它采用了一种相对路径来表示目录与文件之间的关系。也就是网址目录只表示从根目录起的相对位置。)

比如:上面的网站中,网站: http://hxhack.com/的根目录为:"E:\web\",下载目录则在根目录(E:\web\)内的"soft"下,我们网站访问该站时,就是在访问E:\web\soft\目录,而 http://hxhack.com/soft/admin/,它只表明了admin与soft这个目录的相对关系,把这个网站放在D:盘,也一样不改变admin位于soft目录下的关系。

当Server.MapPath方法将相对路径转为真实路径时,它实际是三部分路径加在一起得到真实路径的:网页目前执行时所在的相对路径,也就是从网站物理根目录起的相对路径,比如上面例子中conn.asp处在从根目录起的"/soft/"下;然后调用的数据库的相对路径是admin/hack58.mdb,这样就得到从根目录起的完整相对路径:"/soft/admin/hack58.mdb"。

这些都只是相对的路径,如何变为真实路径呢?

设置过iis的人都会知道,每一个网站,都必须指定它在硬盘上的物理目录,比如上例中,网站根目录所在的物理目录为:"E:\web",Server.MapPath方法正是通过把"网站根目录的物理地址+完整的相对路径",从而得到真实的物理路径。这样,数据库在硬盘上的物理路径是:E:\web\soft\admin\hack58.mdb。

在这里,IIS以"\"表示真实路径的目录关系,而以"/"表示虚拟路径,这可能就是IE会自动把我们地址中的"\"转为"/"的原因吧。

明白这些,我们再来理解暴库就不难了,当我们提交_blank> http://hxhack.com/soft%5cview.asp?id=58时,view.asp调用conn.asp后,得到的网页相对路径是这样的:/soft\ (见上),再加上"admin/hack58.mdb",就得到"/soft\"+admin/hack58.mdb。在iis中,"/"和"\"代表着不同的意义,遇到了"\"时,认为它已到了根目录所在的物理路径,不再往上解析(为何不再往上解析?后面还会分析的),于是网站的完整相对路径变成了

:"admin/hack58.mdb",再加上根目录的物理路径,得到的真实路径变成:"e:\web\admin\hack58.mdb",而这个路径是不存在的,数据库连接当然会失败,于是IIS会报错,并给出错误原因:

Microsoft JET Database Engine 错误 '80004005'

'e:\web\admin\hack58.mdb'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。

/soft/conn.asp,行12

这就是暴库语句的原因

三、条件

个人认为暴库的条件:

1、一般的错误返回页面是本地IE提供的,所以我们先得关了本地的错误页面,具体在菜单项的'工具->internet选项->高级->显示友好信息'

2、对方数据库要是Access型。

3、是数据库连接中没有加入容错代码 所以导致错误不能跳过而活生生的把数据文件连接暴出来

4、 对方的IIS没有关闭错误提示 只要关了错误提示就算你怎么暴也没有用

5、不一定要2级目录 但是肯定的是一级目录是绝对不成功的

6、要成功一定要调用到数据库 不一定是view.asp?id=58 这种类别的 只要是提交或者检测数据的基本都可以

四、注意

1、遇到到ASP或ASA等用迅雷下载后改成MDB后缀照用

2、遇到#改成23%后下载

3、遇到加密的解密后查看相关信息

4、遇到MD5密码去网站解密

5、直接浏览Conn.asp文件遇到空间时查看源文件

方法实践:

一,关于"%5c"暴库大法:

这种方法被认为是暴库绝招,很是流行了一阵(随着知道的人多了,防备也加强了,没以前那么有效了)。这种方法,简单点说就是,打开网页时,把网址址中的"/"换成"%5c",然后提交,就可以暴出数据库的路径。

实际上,并不是所有网址都有效,需要"asp?id="这样的网页地址(表示有调用数据库的行为),如果你确认这个网页有调用数据库的,后面不是这样的也可以,比如chklogin.asp等也可以。(当然,也还有其它条件,后面再谈。)

先举个例子,

http://localhost/2222/regs.asp?post=log 把第二个"/"换成"%5c"

http://localhost/2222%5cregs.asp?post=log

提交后会得到如下结果:Microsoft JET Database Engine 错误 '80004005'

'c:\inetpub\wwwroot\db\daidalos.mdb'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。

/2222/db/user.asp,行 6

"%5c"暴库法,它不是网页本身的漏洞,而是利用了IIS解码方式中的一个特性,如果IIS安全设置不周全,而网页设计者未考虑IIS错误,就会被人利用。

为何要用"%5c"?它实际上是"\"的十六进制代码,也就是"\"的另一种表示法。在电脑中,它们是一个东东。

、、、\\\\\\\\\

但提交"\"和"%5c"却会产生不同的结果,在ie中,我们把下面第一个地址中的"/"换成"\"提交:

http://localhost/2222/regs.asp?post=log

http://localhost/2222\regs.asp?post=log

二者的访问结果是一样的。ie会自动把"\"转变成"/",从而访问到同一地址。

但是,当我们把"/"换成十六进制写法"%5c"时,ie不会对此进行转换。地址中的"%5c"被原样提交了

当IIS收到后解析时,又会将%5c还原成"\"。这样,iis中网址的相对路径就变成

/2222\ regs.asp。这一点很重要。问题正是从这里开始的

在ASP网页中,凡调用数据库时,都会用到一个连接数据库的网页conn.asp(程序员们都喜欢起这个名字。不过今天我们讲课用的整站系统的连接数据库文件的名字是user.asp),它会创建一个数据库连接对象,定义要调用的数据库路径

我们来看一下这个系统的数据库连接文件。User.asp(和conn.asp一个作用只不过名字不一样)的写法

dim udb

udb="db/daidalos.mdb"

Set Conn = Server.CreateObject("ADODB.Connection")

myconn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(""&udb&"")

Conn.Open MyConn

%>

Server.MapPath方法的作用是将网站中的相对路径转变成物理上的绝对路径。为何要这样?因为连接数据库时,须指明它的绝对路径。

(这里可能有人不明白,什么相对路径、绝对路径?IIS为了不让访问者知道真实的实际路径,并且确保网站不因变换地址而影响使用,它采用了一种相对路径来表示目录与文件之间的关系。也就是网址目录只表示从根目录起的相对位置。

Server.MapPath实际是通过 网页目前执行时所在的相对路径,比如上面例子中user.asp调用的数据库的相对路径是db/daidalos.md,这样就IIS就确定了数据库的相对路径:"/db/daidalos.mdb"。到这里。还没有出现错误。

数据库的调用需要绝对路径。。这些都只是相对的路径,如何变为真实路径呢?

Server.MapPath方法正是通过把"网站根目录的物理地址+完整的相对路径",从而得到真实的物理路径。

我们今天的跟目录地址就是。I:\盗帅下载程序 V2.0 正式版

IIS会把这两个地址相加。得到数据库地址 I:\盗帅下载程序 V2.0 正式版 +\db\daidalos.md 来正常调用。 。到这里。还是没有出错。

明白这些,我们再来理解暴库就不难了,当我们提交http:// http://localhost/2222%5cregs.asp?post=log时,regs.asp调用user.asp后,得到的网页相对路径是这样的:/db/user.asp "/db/daidalos.mdb。为数据库相对路径 在iis中,"/"和"\"代表着不同的意义,遇到了"\"时,认为它已到了根目录所在的物理路径,不考虑是否前面还有任何硬盘目录。。所以本该数据库的绝对路径是 I:\盗帅下载程序 V2.0 正式版\db\daidalos.mdb。却因为IIS在调用reg.asp 的时候。前面有个\ 于是呼。。。。。。。呼呼呼呼湖。。。就认为前面已经是跟目录的物理路径了。只需要+上目录就可以完成任务了。于是+继续向更原始的地方去找绝对路径。于是呼。找到了他的爷爷。爷爷???爷爷就是网站目录属性里对应的东西。我们看下属性。(本来是该找爸爸的)C:\Inetpub\wwwroot构成了。调用数据库的地址。就是这里了。C:\Inetpub\wwwroot\ db\daidalos.md 但是这个地址不存在啊。数据库连接当然会失败,于是IIS会报错,并给出错误原因

Microsoft JET Database Engine 错误 '80004005'

'c:\inetpub\wwwroot\db\daidalos.mdb'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。

/2222/db/user.asp,行 6

这就是暴库语句的来历。

二,conn.asp暴库大法

这里,conn.asp只是表示数据库调用文件,因为多数都是这个名字(有些网站改名,我们也视同conn.asp)。其实,这种暴库法是最先出现的,以前很多牛人都对此进行过探讨。只是在"%5c"暴库大法出现后,倒较少有人提及。

我们再来ASP系统一个盗帅的例子

提交

_ http://localhost/2222/db/user.asp

得到如下结果:Microsoft JET Database Engine 错误 '80004005'

'I:\盗帅下载程序 V2.0 正式版\db\db\daidalos.mdb'不是一个有效的路径。 确定路径名称拼写是否正确,以及是否连接到文件存放的服务器。

/2222/db/user.asp,行 6

有人可能会说,这么简单就暴库,好爽!是不是所有网站都可以这样啊?当然不是,已作了防护的肯定不行,没作防护的,要暴库也是有条件的。

如果说第一种暴库法是利用了绝对路径出错,那么,这种暴库法就是利用了相对路径出错。

一般来说,只要conn.asp不在根目录的系统,而调用文件在根目录,就会出现这种问题。当然这种说法也是经验性的,准确的说就是,conn.asp与调用它的文件,如果相对位置改变了,就会报错,暴出数据库路径。这样说可能有人不明白,不要紧,接着看你就会明白的

文章系统的 user.asp位于db目录下,而很多调用它的文件在系统根目录下,比如regs.asp等,这样当conn.asp执行时,它是在系统根目录I:\盗帅下载程序 V2.0 正式版\下执行的,因此,conn.asp文件中,调用数据库时,它考虑到执行时的目录路径,因而数据库的相对地址写成如下:

dim udb

udb=" db/daidalos.mdb"

这样,当它在系统根目录下执行时,数据库的相对路径为根目录下的"db"目录内。这是很正常的情况。。但是当我们直接请求它时,它工作的当前目录是在根目录下的db目录内,这时,数据库的相对路径就变成了" db/db/daidalos.mdb ",这样它当然出错。得到的绝对路径中多出了"inc。

三,暴库的防范

说白了,暴库是因为IIS服务器会对每个执行错误给出详细说明,并停止执行,而IIS的默认设置又是将错误信息返回给用户。因此,要避免暴库,就应改变IIS的默认设置,选取错误时只给一个出错的页面,不给详细信息。如

"处理 URL 时服务器出错。请与系统管理员联系。"

其实,作为网站管理者,无法对虚拟主机设置时,只能在网页中加强防范。就是在可能出错的页面加上这一句:

"On Error Resume Next",特别是在conn.asp文件中要加上。

它的意思是出错后,恢复执行下面的,也就是不理会出错,当然就不会给出错误信息了。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值