PHP的strcmp函式引發的安全問題
阿新 • • 發佈:2018-12-23
在官方的文件有這麼一端說明:
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