SQL入侵:爆库原理跟基础方式
SQL注入风行良久了,我们找漏洞注入目标无非是想得到数据库内的货色,比如用户名密码等。当然mssql数据库还可以借此取得权限。如果我们不必注入就可以得到全部数据库,不是更好吗·于是暴库成了一个比注入更简略的的入侵手腕。
有关暴库的方法,高手们常在入侵文章中进步,但多是一笔带过,有些就某一个方法谈的,也多是就方法进行探讨。最近有一篇.再谈5c暴库的利用.文章,算是对暴库进行了一些总结,因此在网是传播很广。但仍不谈及原理,而且结论也只是就于经验,似是而非,于是决议来谈谈暴库的原理与法则。
一,对于"5c"暴库大法:
这种办法被以为是暴库绝招,很是流行了一阵跟着知道的人多了,防范也增强了,没以前那么有效了。这种方式,简单点说就是,翻开网页时,把|网|址|泛亚娱乐|http://yuan01.bc88.info/fei/址中的"/"换成"5c",而后提交,就可以暴出数据库的路径。
实际上,并不是所有|网|址|泛亚娱乐|http://yuan01.bc88.info/fei/都有效,须要"aspid"这样的网页地址表示有调用数据库的行动,如果你确认这个网页有调用数据库的,后面不是这样的也能够,好比chklogin.asp等也可以。当然,也还有其它前提,后面再谈。
先举个例子,
_blank _blank 219.237.81.46/yddown5cview.aspid3
把第二个"/"换成"5c"
_blank _blank 219.237.81.46/yddown5cview.aspid3
提交后会得到如下结果:图1
Microsoft JET Database Engine 毛病 ’80004005’
’D:111adminrds_dbd32rfd213fg.mdb’不是一个有效的路径。 断定路径名称拼写是否正确,以及是否连接到文件寄存的服务器。
/yddown/conn.asp,行12
阐明:这是黑防试验室的一个网站,暴库是他们成心开放的,因为它的关口不是注入,而是进入后盾后如何失掉shell。
当初良多人都知道这个方法了,我就不多举例了。但明白暴库原理的人估量是未几的。有人成功,有人不胜利,.再谈5c暴库的利用.一文总结说,须变换第二个"/"为"5c"才行。很有适用性,但这个论断只是一种教训,实在并不准确。让我们先看看它的原理
"5c"暴库法,它不是网页自身的破绽,而是应用了IIS解码方法中的一个特征,假如IIS保险设置不周全,而网页设计者未斟酌IIS过错,就会被人利用。
为何要用"5c"·它实际上是""的十六进制代码,也就是""的另一种表示法。在电脑中,它们是一个东东。图2十六进制转换图
但提交""跟"5c"却会发生不同的成果,在ie中,咱们把下面第一个地址中的"/"换成""提交:
_blank 219.237.81.46/yddown/view.aspid3
_blank 219.237.81.46/yddownview.aspid3
二者的访问结果是一样的。ie会自动把""改变成"/",从而访问到统一地址。
然而,当我们把"/"换成十六进制写法"5c"时,ie不会对此进行转换。地址中的"5c"被原样提交了。这是抓包结果:图3
GET /yddown5cview.aspid3 HTTP/1.1
当IIS收到后解析时,又会将5c还原成""。这样,iis中|网|址|泛亚娱乐|http://yuan01.bc88.info/fei/的相对路径就变成/yddownview.asp。这一点很主要。问题恰是从这里开端的。
在ASP网页中,凡调用数据库时,都会用到一个衔接数据库的网页conn.asp,它会创立一个数据库连接对象,定义要调用的数据库门路
一个典范的conn.asp如下:
dim conn
dim dbpath
set connserver.createobject("adodb.connection")
DBPath Server.MapPath("admin/rds_dbd32rfd213fg.mdb")
conn.Open "driver Microsoft Access Driver (..mdb) ;dbq" DBPath
大家留神第4句:DBPath Server.MapPath("admin/rds_dbd32rfd213fg.mdb"),Server.MapPath方法的作用是将网站中的相对路径转变成物理上的绝对路径。为何要这样·由于连接数据库时,须指明它的绝对路径。
这里可能有人不清楚,什么绝对路径、相对路径·IIS为了不让拜访者晓得实在的实际路径,并且确保网站不因变换地址而影响应用,它采取了一种相对路径来表示目录与文件之间的关联。也就是|网|址|泛亚娱乐|http://yuan01.bc88.info/fei/目录只表现从根目录起的相对地位。
比方:上面的网站中,网站:_blank 219.237.81.46的根目录为:"D:111"雨点下载目录则在根目录D:111内的"yddown"下,我们网站访问该站时,就是在访问D:111yddown目录,而219.237.81.46/yddown/admin/,它只表明了admin与yddown这个目录的相对关系,把这个网站放在e:盘,也一样不转变admin位于yddown目录下的关系。
当Server.MapPath方法将相对路径转为真实路径时,它实际是三局部路径加在一起得到真实路径的:网页泛亚娱乐|http://yuan01.bc88.info/fei/履行时所在的相对路径,也就是从网站物理根目录起的相对路径,比如上面例子中conn.asp处在从根目录起的"/yddown/"下;然后调用的数据库的相对路径是admin/rds_dbd32rfd213fg.mdb,这样就得到从根目录起的完整相对路径:"/yddown/admin/rds_dbd32rfd213fg.mdb"。
这些都只是相对的路径,如何变为真实路径呢·
设置过iis的人都会知道,每一个网站,都必需指定它在硬盘上的物理目录,比如上例中,网站根目录所在的物理目录为:"D:111",Server.MapPath方法正是通过把"网站根目录的物理地址+完全的相对路径",从而得到真实的物理路径。这样,数据库在硬盘上的物理路径是:d:111yddownadminrds_dbd32rfd213fg.mdb。
在这里,IIS以""表示真实路径的目录关系,而以"/"表示虚构路径,这可能就是IE会主动把我们地址中的""转为"/"的起因吧。
明确这些,我们再来懂得暴库就不难了,当我们提交_blank 219.237.81.46/yddown5cview.aspid3时,view.asp调用conn.asp后,得到的网页相对路径是这样的:/yddown 见上,再加上"admin/rds_dbd32rfd213fg.mdb",就得到"/yddown"+admin/rds_dbd32rfd213fg.mdb。在iis中,"/"和""代表着不同的意思,碰到了""时,认为它已到了根目录所在的物理路径,不再往上解析为何不再往上解析·后面还会剖析的,于是网站的完整相对路径变成了