apollosun original
En fait, qu'il s'agisse d'un téléchargement de composant ou d'un non-composant, il existe cette vulnérabilité. Veuillez lire attentivement le code suivant. Tant que vous comprenez le code, vous pouvez le comprendre.
Ici, en prenant le téléchargement du composant ASPUPLOAD comme exemple,
les trois fonctions clés suivantes sont :
function killext(byval s1) 'Tue les suffixes de fichiers illégaux
estomper le texte autorisé
allowext=".JPG,.JPEG,.GIF,.BMP,.PNG,.SWF,.RM,.MP3,.WAV,.MID,.MIDI,.RA,.
AVI,.MPG,.MPEG,.ASF,.ASX,.WMA,.MOV,.RAR,.ZIP,.EXE,.DOC,.XLS,.CHM,.HLP,.PDF"
s1=ucase(s1)
si len(s1)=0 alors
killext=""
autre
sinon chk(allowext,s1,",") alors
killext=".merde"
autre
killext = s1
finir si
finir si
end function
function chk(byval s1,byval s2,byval fuhao) 'Vérifiez que la chaîne contient
dimi,a
chk=faux
a=divisé(s1,fuhao)
pour i = 0 à ubound(a)
si trim(a(i))=trim(s2) alors
chk=vrai
sortie pour
finir si
suivant
end function
function gname(byval n1) 'Générer automatiquement les noms de répertoire et de fichier en fonction de la date, le paramètre 1 génère le répertoire, le paramètre 2 génère le nom du fichier (pas de suffixe)
faible t,r
t=maintenant()
randomiser (minuterie)
r=int((rnd+1-1)*9999)
sélectionner le cas n1
cas 1
gname=année(t)&right("00"&mois(t),2)&right("00"&jour(t),2)
cas 2
gname=right("00"&heure(t),2)&right("00"&minute(t),2)&right("00"&seconde(t),2)&right("0000"&r,4)
fin de la sélection
méthode d'appel
de fonction de fin
:dim oup,ofile,ext,myfile
Set oup = Server.CreateObject("Persits.Upload")
oup.SetMaxSize 10000000, vrai
call oup.Save() 'Ceci est téléchargé dans la mémoire du serveur et aucun fichier réel n'est généré.
set ofile = oup.files(1)
ext=killext(ofile.ext)
monfichier="/" & ganme(1) & "/" & gname(2) & ext
call ofile.saveas(server.mappath(myfile))
Remarque supplémentaire :
si un pirate informatique utilise nc pour télécharger des fichiers illégaux, les fichiers finaux qu'il obtient ne sont que
des fichiers "de merde" tels que
200511051234559103.shit
!