사실, 컴포넌트 업로드든 비컴포넌트 업로드든 이런 취약점이 존재합니다. 다음 코드를 주의 깊게 읽어보시면 이해하실 수 있습니다.
여기서는 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=ucase(s1)
len(s1)=0이면
킬엑스스트=
또 다른
chk(allowext,s1,,)가 아니면
killext=.똥
또 다른
killext=s1
종료하면
종료하면
함수 종료
function chk(byval s1,byval s2,byval fuhao) '문자열에 다음이 포함되어 있는지 확인하세요.
디미,아
chk=거짓
a=분할(s1,푸하오)
i = 0에서 ubound(a)까지
만약 Trim(a(i))=trim(s2)이면
chk=참
종료
종료하면
다음
함수 종료
function gname(byval n1) '날짜를 기준으로 디렉터리 및 파일 이름을 자동으로 생성합니다. 매개변수 1은 디렉터리를 생성하고, 매개변수 2는 파일 이름을 생성합니다(접미사 없음).
어두움 t,r
t=지금()
무작위화(타이머)
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)
선택 종료
함수 종료
호출 방법:
희미한 oup,offile,ext,myfile
설정 = Server.CreateObject(Persits.Upload)
oup.SetMaxSize 10000000, 참
call oup.Save() '서버 메모리에 업로드되며 실제 파일은 생성되지 않습니다.
파일 세트 = oup.files(1)
ext=killext(ofile.ext)
myfile=/ & ganme(1) & / & gname(2) & ext
ofile.saveas(server.mappath(myfile)) 호출
추가 참고 사항:
해커가 nc를 사용하여 불법 파일을 업로드하면 최종적으로 얻는 파일은 200511051234559103.shit과 같은 똥 파일일 뿐입니다!