您的位置:首页 > 编程语言 > PHP开发

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

2016-12-22 00:09 369 查看
 在官方的文档有这么一端说明:
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)

 看图



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

[原文地址]
http://lcx.cc/?i=4244
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: