ASP网站制作之使用%5c绕过考证
源代码保护方面其实现在考虑得没那么多了..NET也可以反编译.ASP写得复杂的话别人能看得懂的话.他也有能力自己写了.这方面担心的倒不太多.纵观现在网上可以下载的那些所谓BBS还有什么网站等等的源代码使用%5c绕过考证---------------------------------------
lake2(http://mrhupo.126.com)
2004-11-27
---------------------------------------
说到%5c,你是否是想起了以后盛行的谁人%5c暴库毛病,呵呵,本文就是对%5c使用的探究(呵呵,固然有我提出的新东东,也许对你有匡助哦^_^)。
好,我们先追根溯源,找到谁人毛病的老底。看看绿盟2001年的毛病通告:http://www.nsfocus.net/index.php?act=sec_bug&do=view&bug_id=1429
N年之前使用这个毛病能够完成目次遍历,固然微软出了补钉,不外仿佛补钉是用来限定iis只能会见假造目次的,以是毛病仍是存在,只不外使用体例变了。对iis来讲,提交一个含有%5c的url可以找到文件,可是该文件里以绝对路径援用的其他文件却找不到了(%5c是的url编码,iis跳转到上一级目次往找,固然找不到;头晕了吧,哈哈,我也头晕啊)。
厥后这个毛病就被牛人发掘出来了,也就是传说中的%5c暴库:因为毗连数据库的文件援用的绝对路径,提交%5c找不到文件,以是招致堕落,iis就会老厚道实的说出数据库的路径(不分明?找google)。
一个偶尔的时机我发明还能够使用%5c绕过asp的考证;当我们暴库失利的时分无妨尝尝。
空话少说,看上面的代码:
<!--#INCLUDEfile="conn.asp"-->
<%
guest_user=trim(request("guest_user"))
guest_password=trim(request("guest_password"))
Setrs=Server.CreateObject("ADODB.Recordset")
sql="select*fromadminwhereid=1"
rs.opensql,conn,3,2
readuser=rs("guest_user")
readpassword=rs("guest_password")
ifreaduserguest_userorreadpasswordguest_passwordthen
response.write"请输出准确地办理员暗码!"
response.end
else
session("admin")=1上岸后写进seesion中保留
response.write("上岸乐成,请前往信息页")
endif
%>
看到没有,要想经由过程考证必需让数据库里的用户名暗码与提交的分歧;想到甚么?让我们再看看数据库毗连文件代码:
<%
onerrorresumenext
setconn=server.createobject("adodb.connection")
DBPath=Server.MapPath("guestbook.asp")
conn.Open"driver={MicrosoftAccessDriver(*.mdb)};dbq="&DBPath
%>
啊,有容错语句不克不及暴库!等等,假如提交%5c数据库找不到,因为容错,以是程序会持续实行,那末说来从数据库失掉的用户名暗码皆为空(想一想偶然暴库失利是否是看到空空的框架,由于数据都是空嘛),哈哈,如许我们就绕过考证了!
晓得怎样做了吧,把上岸页面保留到当地,修正提交的url,把最初一个/改成%5c,用户名暗码用空格(有的程序会反省用户名暗码是不是为空,空格会被程序过滤),提交,就ok了。
诶,列位不要觉得我本人没事写段代码来捣鼓,实践上这个是我们黉舍一个妙手做的留言板程序,就挂在黉舍的主页,呵呵。
既然弄懂了道理,固然要找实践毛病啦,天然是拿赫赫有名的“洞”网论坛开刀。不外失利了,由于它的数据库毗连文件里有这么一段:
IfErrThen
err.Clear
SetConn=Nothing
Response.Write"数据库毗连堕落,请反省毗连字串。"
Response.End
EndIf
数据库找不到程序就停止了,呵呵,空欢乐一场。
接着又往down了bbsxp论坛,翻开数据库毗连文件,晕,基本没有容错语句;呵呵,不外能够暴库哦。
我又不是BT,以是不往谋事了,写篇文章,算是给列位妙手供应材料吧。
总结一下这个打击办法乐成的前提:1、数据库毗连用的绝对路径且唯一复杂的容错语句;2、服务器iis版本为4或5;3、程序里不反省空字符大概反省时不外滤空格而对照时过滤空格;4、程序不克不及位于一级目次
至于提防,呵呵,既然打击前提晓得了,提防措施天然也出来了^_^
</p>楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。 我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标. 接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。 ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。 兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的 你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。 交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。 不能只是将它停留在纸上谈兵的程度上。 那么,ASP.Net有哪些改进呢?
页:
[1]