ASP教程之关于Oblog 2.52 help.asp破绽的修补成绩...
因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。还无法完全实现一些企业级的功能:完全的集群、负载均横。成绩 关于Oblog 2.52 help.asp破绽的修补成绩这是一件很成心思的工作。
OBlog是一套基于asp的Blog体系,今朝的版本是2.52吧。
前些日子,呈现了个help.asp文件破绽,
可以检查恣意文件的源文件,包含asp文件,效果天然是严重的。
如今,这个成绩官方已修补了,修正后的关头代码以下:
<%
fname=trim(request("file"))
fname=lcase(fname)
fname=replace(fname,"asp","")
if fname="" then
fname="help/h_sysmain.htm"
end if
if right(fname,4)=".htm" then
show_help="以后地位:<a href='index.asp'>首页</a>→blog利用匡助<hr noshade>"
show_help=show_help&adodb_loadfile(fname)
show=replace(show,"$show_list$",show_help)
response.Write show
call bottom()
else
response.Write("输出文件不准确")
end if
%>
昨天某个QQ群里,一个用户突发奇想,说是修补后的下面这段代码仍然有成绩。
上面来看看他的剖析思绪:
修补的代码次要是两方面,一个是交换失落一切的asp字符串,避免检查asp文件,二是只要后缀是htm的文件才干用。
起首,看看交换asp的代码:
fname=replace(fname,"asp","")
所以假如会见help.asp?file=conn.asp的时分,就酿成了help.asp?file=conn.了
那末假如咱们会见help.asp?file=conn.aaspsp呢,经由交换今后就酿成了help.asp?file=conn.asp了。
所以,这个交换asp的回护办法不是很牢靠的,仍是可以绕曩昔的。
那末,再看第二点,就是怎样绕事后缀是.htm的反省
他的思绪是如许的:
前段工夫不是有个上传破绽吗,咱们普通都是先抓包,然后修正数据,
机关文件名,如a.asp%00.gif,
如许,上传法式还会觉得这就是gif文件,而实践保留的时分只保留成a.asp了。
那末在这里,不是也能够吗?
机关一个conn.asp%00.htm的文件名,如许就可以够棍骗过fname的检测,
然后在adodb_loadfile(fname)函数里,真正翻开的是conn.asp文件,
如许就到达了目标。
从他的思绪来看,仍是对照符合逻辑的,
并且,他剖析的第一步,就是绕过对asp的反省也是准确的
只是第二步,他的了解仍是有误的。
很多多少人晓得上传破绽,可是究竟甚么是上传破绽,
很多多少人就不清晰了。
并且在asp中,和php,perl外面又有些分歧。
详细可以参考一下这个文档,
http://security-assessment.com/Papers/0x00_vs_ASP_File_Uploads.pdf
信任对人人了解上传破绽仍是对照有匡助的。
</p>asp对于服务器的要求较高,一般的服务器如果访问量一大就垮了,不得不重启。 你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。 封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。 学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点: Session:这个存储跟客户端会话过程的数据,默认20分钟失效 兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的 另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件) ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码,能产生和执行动态、交互式、高效率的站占服务器的应用程序。 Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名") Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件 我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。 跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组 完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。 封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。 ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。 运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。 没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。 ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。 我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。 如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助:
页:
[1]
2