1. 程式人生 > >PHP的strcmp函式引發的安全問題

PHP的strcmp函式引發的安全問題

在官方的文件有這麼一端說明:

Note a difference between 5.2and5.3 versions

echo (int)strcmp('pending',array());
will output -1in PHP 5.2.16(probably in all versions prior 5.3)
but will output 0in PHP 5.3.3Of course, you never need to use array as a parameter instring 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