| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 593 人关注过本帖
标题:骗人的“6行代码实现无组件上传”
只看楼主 加入收藏
dzt0001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:5
帖 子:1281
专家分:4998
注 册:2005-10-12
收藏
 问题点数:0 回复次数:1 
骗人的“6行代码实现无组件上传”

下面是很多网站转载的原文

目前有很多无组件上传类,我大概看了一下,大多写的相当复杂,有的居然还只能传文本最关键的是没有10行代码以下的 :)我花了一个晚上时间研究了一下ADODB.Stream,并且用了6行代码实现了无组件上传:

strFileName = Request.QueryString("file1")
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = 1 '' adTypeBinary
objStream.Open
objStream.LoadFromFile strFileName
objStream.SaveToFile Server."123_onweb.gif",2


使用方法:
把上面的代码写成upload.asp
在浏览器里面输入:
http://XXX/upload.asp?file1=c:\上传文件\123.gif
XXX为你的主机地址
执行完后你会看到你的目录下面多了一个123_onweb.gif
他就是你要文件拉!!!!


根据原理我们可以扩展以下代码:
upload.asp文件
<%
Function GetFileName(ByVal strFile)
If strFile <> "" Then
GetFileName = mid(strFile,InStrRev(strFile, "\")+1)
Else
GetFileName = ""
End If
End function

strFileName = Request.Form("file1")
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = 1 '' adTypeBinary
objStream.Open
objStream.LoadFromFile strFileName
objStream.SaveToFile Server.MapPath(GetFileName(strFileName)),2
objStream.Close
%>

upload.htm文件
<form name="FORM" action="upload.asp" method="post">
<input type="submit" name="submit" value="OK">
<input type="file" name="file1" style="width:400" value="">
</form>

======================================
我一开始在本机上测试,果然可行,并加了大小、格式限制,也可以。
但上传到服务器上,问题来了。500错误,“文件无法被打开。”。
用baidu搜索了一下,在baidu的asp吧,发现了以下信息。
http://post.baidu.com/f?kz=4635658
(57楼和58楼)
========================================

这段代码肯定不行:
第一行 strFileName = Request.QueryString("file1") 只是传了一个文件名路径上去,服务器由于在本机所以按照这个路径能找到文件strFileName

所以第四行才能加载文件
objStream.LoadFromFile strFileName
第五行保存
objStream.SaveToFile Server.MapPath("123_onweb.gif"),2
其实对服务器来说这个文件本来就在服务器上,加载这个文件后重新保存了一个地方。这不是自欺欺人么,嘿嘿。
如果你的服务器在远程,试想服务器从d:\chang.jpg这个位置能找到这个文件么?

如果把这段代码放到服务器上反而还会造成巨大漏洞
攻击者修改file1的值就可以把你服务器上其他路径的文件复制到当前目录下甚至c盘
文件名为123_onweb.gif
然后他就可以下载这个文件
哈哈

由于无知,害我浪费了很多时间,希望大家不要再上当。

[此贴子已经被作者于2006-5-15 16:31:49编辑过]

搜索更多相关主题的帖子: 组件 代码 骗人 
2006-05-15 16:26
yms123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:209
帖 子:12488
专家分:19042
注 册:2004-7-17
收藏
得分:0 
这个代码我见过,得到路径是不行的,上传不了文件。
2006-05-15 21:33
快速回复:骗人的“6行代码实现无组件上传”
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014760 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved