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, nous prenons le téléchargement du composant ASPUPLOAD comme exemple.
Les 3 fonctions clés suivantes :
function killext(byval s1) 'Tuer 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
fonction de fin
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
fonction de fin
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&hour(t),2)&right(00&minute(t),2)&right(00&second(t),2)&right(0000&r,4)
fin de la sélection
fonction de fin
Méthode d'appel :
dim oup,ofile,ext,monfichier
Définir 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
appelez ofile.saveas (server.mappath (mon fichier))
Notes complémentaires :
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 comme 200511051234559103.shit !