HTMer

研究互联网络和电脑应用技术的IT技术网。 (勤奋+智慧→理想)

« TIOBE编程语言排行榜(立志搞程序开发的朋友值得关注的信息)解决Excel单元格中的数据显示为井号(#)的方法 »

ASP中chr(0)文件上传漏洞原理及解决方法

    我们在用ASP开发文件上传功能的时候,为了防止用户上传木马程序,常常会限制一些文件的上传,常用的方法是判断一下上传文件的扩展名是否符合规定,可以用right字符串函数取出上传文件的文件名的后四位,这样很容易就能判断了,但是这里面有一个漏洞,非常危险,就是chr(0)漏洞,详情请接着往下看。

    一、首先解释下什么是chr(0)?

    在ASP中可以用chr()函数调用ASCII码,其中chr(0)表示调用的是一个结束字符,简单的说当一个字符串中包含chr(0)字符时,只能输出chr(0)前面的字符,chr(0)后面的字符将不被输出。举例如说明:

<%response.write "HTMer.com"&chr(0)&"欢迎您"%>

    以上代码你在IIS下运行下看看,是不是只会输出“HTMer.com”呢?后面的“欢迎您”就没有了,因为读到chr(0)时就认为该语句结束了。

    二、chr(0)漏洞上传原理:

    假设我在ASP程序中已经设置只能上传jpg文件,这里看我怎么利用chr(0)漏洞上传ASP木马的:

    这里假设有一个ASP木马文件为htmer.asp,我把它改名为htmer.asp .jpg,大家有没有看到中间有一个空格?我们在获取该文件名时,这个空格就被认为是chr(0),当用right("htmer.asp .jpg",4)看的时候,确实是.jpg,但是当实际读取htmer.asp .jpg,并生成文件的时候,系统读到chr(0)就以为结束了,所以后面的.jpg就输出不来了,上传后的文件名被自动生成了htmer.asp,这意味着什么?我想你应该知道了吧。

    三、解决chr(0)漏洞的方法

    解决办法是检查上传的文件名里面有没有chr(0),在ASP中直接用replace函数替换掉chr(0)字符即可。



欢迎转载,转载请注明:转载自HTMer [ http://www.htmer.com/ ]

本文链接地址:http://www.htmer.com/article/733.htm

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

HTMer , Powered By Z-Blog, 苏ICP备08003082号

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本站内容必须也遵循“署名-非商业用途-保持一致”的创作共用协议.
HTM|HTML|ASP|PHP|JSP|Mysql|SQL|Dreamweaver|Flash|Fireworks|Photoshop|SEO Copyright www.HTMer.com. Some Rights Reserved. English Version