有时候通过程序上传木马,一般都是伪装成图片,下面是asp下检测图片木马的代码,需要的朋友可以参考下。
首先判断文件大小:
- iffile.filesize<10then
- Response.Write(<script>alert('您没有选择上传文件')</script>)
- Response.Write(<script>history.go(-1)</script>)
- Response.End()
- endif
将文件上传到服务器后,判断用户文件中的危险操作字符:
- setMyFile=server.CreateObject(Scripting.FileSystemObject)
- setMyText=MyFile.OpenTextFile(FilePath,1)'读取文本文件
- sTextAll=lcase(MyText.ReadAll)
- MyText.close
- setMyFile=nothing
- sStr=.getfolder|.createfolder|.deletefolder|.createdirectory|.deletedirectory|.saveas
- |wscript.shell|script.encode|server.|.createobject|execute|activexobject|language=
- sNoString=split(sStr,|)
- fori=0toubound(sNoString)
- ifinstr(sTextAll,sNoString(i))then
- setfiledel=server.CreateObject(Scripting.FileSystemObject)
- filedel.deletefileFilePath
- setfiledel=nothing
- Response.Write(<script>alert('您上传的文件有问题,上传失败');window.close();</script>)
- Response.End()
- endif
- next
如何防止木马性图片上传
这个代码我检验过没有问题,可以阻挡木马性图片的上传
- <%
- '***************************************************************
- 'CheckFileType函数用来检查文件是否为图片文件
- '参数filename是本地文件的路径
- '如果是文件jpeg,gif,bmp,png图片中的一种,函数返回true,否则返回false
- '***************************************************************
- constadTypeBinary=1
- dimjpg(1):jpg(0)=CByte(&HFF):jpg(1)=CByte(&HD8)
- dimbmp(1):bmp(0)=CByte(&H42):bmp(1)=CByte(&H4D)
- dimpng(3):png(0)=CByte(&H89):png(1)=CByte(&H50):png(2)=CByte(&H4E):png(3)=CByte(&H47)
- dimgif(5):gif(0)=CByte(&H47):gif(1)=CByte(&H49):gif(2)=CByte(&H46):gif(3)=CByte(&H39):gif(4)=CByte(&H38):gif(5)=CByte(&H61)
- Response.WriteCheckFileType(Server.MapPath(2.gif))
- functionCheckFileType(filename)
- onerrorresumenext
- CheckFileType=false
- dimfstream,fileExt,stamp,i
- fileExt=mid(filename,InStrRev(filename,.)+1)
- setfstream=Server.createobject(ADODB.Stream)
- fstream.Open
- fstream.Type=adTypeBinary
- fstream.LoadFromFilefilename
- fstream.position=0
- selectcasefileExt
- casejpg,jpeg
- stamp=fstream.read(2)
- fori=0to1
- ifascB(MidB(stamp,i+1,1))=jpg(i)thenCheckFileType=trueelseCheckFileType=false
- next
- casegif
- stamp=fstream.read(6)
- fori=0to5
- ifascB(MidB(stamp,i+1,1))=gif(i)thenCheckFileType=trueelseCheckFileType=false
- next
- casepng
- stamp=fstream.read(4)
- fori=0to3
- ifascB(MidB(stamp,i+1,1))=png(i)thenCheckFileType=trueelseCheckFileType=false
- next
- casebmp
- stamp=fstream.read(2)
- fori=0to1
- ifascB(MidB(stamp,i+1,1))=bmp(i)thenCheckFileType=trueelseCheckFileType=false
- next
- endselect
- fstream.Close
- setfseteam=nothing
- iferr.number<>0thenCheckFileType=false
- endfunction
- %>
以上就是asp防止上传图片木马原理解析,希望对大家的学习有所帮助。