const UpFileType="rar|zip|exe|mpg|rm|wav|mid" 定义了可以上传的文件类型 ... dim EnableUpload 定义了是否允许上传的关键变量 ... FoundErr=false 默认FoundErr变量为假,即没有发现错误(哈哈,关键变量哦,看下面) EnableUpload=false 默认EnableUpload变量为假,即不能上传(哈哈,关键变量哦) ... for each formName in upload.file列出所有上传了的文件(!关键,注意这个FOR循环!) set ofile=upload.file(formName) 生成一个文件对象 ... arrUpFileType=split(UpFileType,"|") 取得定义的可以上传的后缀名 for i=0 to ubound(arrUpFileType) if fileEXT=trim(arrUpFileType(i)) then EnableUpload=true hoho,EnableUpload变量改变了! exit for end if next if fileEXT="asp" or fileEXT="asa" or fileEXT="aspx" then 呵呵,只要是ASP,ASA,ASPX的后缀就废掉了,难怪海洋顶端上不去阿! EnableUpload=false end if if EnableUpload=false then msg="这种文件类型不允许上传!\n\n只允许上传这几种文件类型:" & UpFileType FoundErr=true hoho,FoundErr变量改变了! end if ... if FoundErr<>true then 又是一个重要地方,看来FoundErr变量是能否上传的关键,那如何决定FoundErr变量呢?(草草虫ps:偶可以瞪大了眼睛看啊) randomize ranNum=int(900*rnd)+100 生成一个随机数 filename=SavePath&year(now)&month(now)&day(now)&hour(now)&minute(now)&second(now)&ranNum&"."&fileExt 没有改变上传文件的后缀,爽阿 ... ofile.SaveToFile Server.mappath(FileName) 保存文件 response.write "软件上传成功!软件大小为:" & cstr(round(oFileSize/1024)) & "K" strJS=strJS & "parent.document.myform.DownloadUrl1.value=" & fileName & ";" & vbcrlf 晕拉~还返回上传后改的名字,这回好了,不用猜了。 strJS=strJS & "parent.document.myform.SoftSize.value=" & cstr(round(oFileSize/1024)) & ";" & vbcrlf 注:...表示省略了部分代码
具体的漏洞原理分析,我不想多说了,因为有太多的人分析了,我这里只分析"if fileEXT="asp" or
fileEXT="asa" or fileEXT="aspx" 这一句,这一句他定义了上传的类型,很多人还在后面加个了
攻击方法:(注意:本站旨在提供安全学习,勿做危险用途) 使用破解版的NBSI轻松注入: http://www.target.com/UserInfo.asp?UserID=1 注意:特征字符填写 id 即可破解. 其他文件关键在于特征字符的找寻,即可注入. 这里不祥解.
动力3.51网站管理系统的又一收费漏洞及其解决方法
作者:科技创作自由(真名:康健) QQ:330950407 MSN:htlaeh@hotmail.com 今天又发现了一个动力3.51网站管理系统的收费破解漏洞!该漏洞和之前发现的三个漏洞一样可以使普通注册会员免费阅读收费文章完整内容! 漏洞破解方法:注册为网站会员,然后打开收费文章,提示您没有权限阅读全文,不要管它,直接点"打印本文",接下来出现的"打印文章"页面就可以看到收费文章的全文了! 解决方法: 打开网站主目录下的Article_Print.asp文件(修改前请先备份!) 查找: <!--#include file="Inc/conn.asp"--> <% dim ArticleID,sql,rs ArticleID=Clng(trim(request("ArticleID"))) if ArticleId="" then response.Redirect("Default.asp") end if sql="select * from article where ArticleID=" & ArticleID & "" Set rs= Server.CreateObject("ADODB.Recordset") rs.open sql,conn,1,3 if rs.bof and rs.eof then response.Write("<p>找不到文章</p>") else %>
替换为:
<!--#include file="Inc/syscode_article.asp"--> <% const ChannelID=2 Const ShowRunTime="Yes" dim tLayout,tUser PageTitle="正文" strFileName="Article_Show.asp" if ArticleId<=0 then FoundErr=true ErrMsg=ErrMsg & "<br><li>请指定文章ID</li>" end if if FoundErr=True then call WriteErrMsg() else %>
这是我已修改好的文件: <!--#include file="Inc/syscode_article.asp"--> <% const ChannelID=2 Const ShowRunTime="Yes" dim tLayout,tUser PageTitle="正文" strFileName="Article_Show.asp" if ArticleId<=0 then FoundErr=true ErrMsg=ErrMsg & "<br><li>请指定文章ID</li>" end if if FoundErr=True then call WriteErrMsg() else %>