PHP的strcmp函数引发的安全问题

  • A+
所属分类:WooYun-Zone

原文:http://zone.wooyun.org/content/11124

在官方的文档有这么一端说明:

Note a difference between 5.2 and 5.3 versions 
 
echo (int)strcmp('pending',array()); 
will output -1 in PHP 5.2.16 (probably in all versions prior 5.3) 
but will output 0 in PHP 5.3.3
 
Of course, you never need to use array as a parameter in string comparisions.

大概意思就是5.3的之前和之后版本在使用strcmp比较数组和字符串时候的差异。
在5.3的版本之后使用这个函数比较会返回0,太令人迷恋了。。。

<?php 
#$a='Hello world!'; 
$password=$_GET['password']; 
#$a=True; 
#echo gettype($a); 
if(strcmp('Firebroo',$password)){ 
  echo 'NO!'; 
}else{ 
  echo 'YES!'; 
} 
#echo ord('a'); 
?>

这样一段代码,原本的意图是输入Firebroo才能获得权限,但是在5.3版本之后捏,You just need input an array ,like this(?password[]=1)
看图

PHP的strcmp函数引发的安全问题

跳过了验证,少年,上吧。。

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: