有時候通過程序上傳木馬,一般都是偽裝成圖片,下面是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防止上傳圖片木馬原理解析,希望對大家的學習有所幫助。