apollosun original
На самом деле, независимо от того, является ли это компонентной или некомпонентной загрузкой, эта уязвимость существует. Пожалуйста, внимательно прочитайте следующий код. Если вы понимаете код, вы сможете его понять.
Здесь, на примере загрузки компонента ASPUPLOAD,
следующие три ключевые функции:
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, то
убитьext=""
еще
если нет chk(allowext,s1,","), то
killext=".дерьмо"
еще
killext=s1
конец, если
конец, если
end function
function chk(byval s1,byval s2,byval fuhao) 'Проверьте, что строка содержит
Дими, а
чк = ложь
a=split(s1,фухао)
для i = 0 до ubound(a)
если обрезка(a(i))=обрезка(s2), то
чк = правда
выход для
конец, если
следующий
end function
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=right("00"&час(t),2)&right("00"&минута(t),2)&right("00"&секунда(t),2)&right("0000"&r,4)
конец выбора
метод вызова
конечной функции
:dim oup,ofile,ext,myfile
Set 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
call ofile.saveas(server.mappath(myfile))
Дополнительное примечание:
если хакер использует nc для загрузки нелегальных файлов, конечные файлы, которые он получит, будут просто
«дерьмовыми» файлами, такими как
200511051234559103.shit
!