快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

利用%5C绕过验证

说到%5c,你是不是想起了当前流行的那个%5c暴库漏洞,呵呵,本文就是对%5c利用的探索。
好,我们先追根溯源,找到那个漏洞的老底。

N年以前利用这个漏洞可以实现目录遍历,虽然微软出了补丁,不过似乎补丁是用来限制iis只能访问虚拟目录的,所以漏洞还是存在,只不过利用方法变了。对iis来说,提交一个含有%5c的url能够找到文件,但是该文件里以相对路径引用的其他文件却找不到了(%5c是的url编码,iis跳转到上一级目录去找,当然找不到;头晕了吧,哈哈,我也头晕啊)。

后来这个漏洞就被牛人挖掘出来了,也就是传说中的%5c暴库:由于连接数据库的文件引用的相对路径,提交%5c找不到文件,所以导致出错,iis就会老诚实实的说出数据库的路径(不明白?找google)。

一个偶尔的机会我发现还可以利用%5c绕过asp的验证;当我们暴库失败的时候不妨试试。

废话少说,看下面的代码:

<!--#INCLUDE file="conn.asp" -->
<%
guest_user=trim(request("guest_user"))
guest_password=trim(request("guest_password"))
Set rs= Server.CreateObject("ADODB.Recordset")
sql="select * from admin where id=1"
rs.open sql,conn,3,2
readuser=rs("guest_user")
readpassword=rs("guest_password")
if readuser<>guest_user or readpassword<>guest_password then
response.write "请输入准确地治理员密码!"
response.end
else
session("admin")=1 \\\'登陆后写入seesion中保存
response.write("登陆成功,请返回信息页")
end if
%>

看到没有,要想通过验证必须让数据库里的用户名密码与提交的一致;想到什么?让我们再看看数据库连接文件代码:

<%
on error resume next
set conn=server.createobject("adodb.connection")
DBPath = Server.MapPath("guestbook.asp")
conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & DBPath
%>


啊,有容错语句不能暴库!等等,假如提交%5c数据库找不到,由于容错,所以程序会继承执行,那么说来从数据库得到的用户名密码皆为空(想想有时暴库失败是不是看到空空的框架,因为数据都是空嘛),哈哈,这样我们就绕过验证了!

知道怎么做了吧,把登陆页面保存到本地,修改提交的url,把最后一个/改成%5c,用户名密码用空格(有的程序会检查用户名密码是否为空,空格会被程序过滤),提交,就ok了。

诶,各位不要以为我自己没事写段代码来捣鼓,实际上这个是我们学校一个高手做的留言板程序,就挂在学校的主页,呵呵。

既然弄懂了原理,当然要找实际漏洞啦,自然是拿大名鼎鼎的"洞"网论坛开刀。不过失败了,因为它的数据库连接文件里有这么一段:

If Err Then
err.Clear
Set Conn = Nothing
Response.Write "数据库连接出错,请检查连接字串。"
Response.End
End If


数据库找不到程序就结束了,呵呵,空欢喜一场。

接着又去down了bbsxp论坛,打开数据库连接文件,晕,根本没有容错语句;呵呵,不过可以暴库哦。
我又不是BT,所以不去找事了,写篇文章,算是给各位高手提供资料吧。

总结一下这个攻击方式成功的条件:

1、数据库连接用的相对路径且仅有简朴的容错语句;

2、服务器iis版本为4或5;

3、程序里不检查空字符或者检查时不过滤空格而比较时过滤空格;

4、程序不能位于一级目录
返回类别: 教程
上一教程: 利用ASP验证身份证号是否准确的代码
下一教程: 将RECORDSET作为XML保存

您可以阅读与"利用%5C绕过验证"相关的教程:
· 利用ASP验证身份证号是否准确的代码
· 利用SQLSERVER存储过程实现ASP用户身份验证
· 利用ON ERROR RESUME NEXT来验证日期的输入
· 利用SQL SERVER存储过程实现ASP用户身份验证
· 利用SESSION限制重复操作的简朴方式
    微笑服务 优质保证 索取样品