На самом деле, независимо от того, является ли это компонентной или некомпонентной загрузкой, эта уязвимость существует. Пожалуйста, внимательно прочитайте следующий код. Если вы понимаете код, вы сможете его понять.
Здесь в качестве примера мы возьмем загрузку компонента ASPUPLOAD.
Следующие 3 ключевые функции:
function killext(byval s1) 'Уничтожаем недопустимые суффиксы файлов
тусклый разрешенный текст
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=указ(s1)
если len(s1)=0, то
killext=
еще
если нет chk(allowext,s1,,), то
killext=.дерьмо
еще
killext=s1
конец, если
конец, если
конечная функция
function chk(byval s1,byval s2,byval fuhao) 'Проверьте, что строка содержит
Дими, а
чк = ложь
a=split(s1,фухао)
для i = 0 до ubound(a)
если обрезка(a(i))=обрезка(s2), то
чк = правда
выход для
конец, если
следующий
конечная функция
function gname(byval n1) 'Автоматически генерировать имена каталогов и файлов на основе даты, параметр 1 генерирует каталог, параметр 2 генерирует имя файла (без суффикса)
дим т,р
т=сейчас()
рандомизировать (таймер)
r=int((rnd+1-1)*9999)
выберите случай n1
случай 1
gname=год(t)&right(00&месяц(t),2)&right(00&день(t),2)
случай 2
gname=вправо(00&час(t),2)&вправо(00&минута(t),2)&вправо(00&секунда(t),2)&вправо(0000&r,4)
конец выбора
конечная функция
Метод вызова:
затемнить oup,ofile,ext,myfile
Установить oup = Server.CreateObject(Persits.Upload)
oup.SetMaxSize 10000000, True
call oup.Save() 'Это загружается в память сервера, и фактический файл не создается.
набор файлов = oup.files(1)
ext=killext(ofile.ext)
myfile=/ & ganme(1) & / & gname(2) & ext
вызов ofile.saveas(server.mappath(myfile))
Дополнительные примечания:
Если хакер использует nc для загрузки нелегальных файлов, в конечном итоге они получат просто дерьмовые файлы типа 200511051234559103.shit!