php strcmp bypass漏洞

在PHP 5.3版本以上的strcmp()有一个bypass漏洞,在说这个漏洞之前我们先来看一下strcmp()这个函数。

int strcmp ( string $str1 , string $str2 )

  (注意该比较区分大小写。)

如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0。

测试代码如下:

<?php
$password = $_GET['pass'];

if (strcmp('websec',$password)){
    echo "No!";
}
else{
    echo "Success!";
}
?>

 strcmp()在比较字符串和数组的时候直接返回0,这样通过把目标变量设置成数组就可以绕过该函数的限制

http://127.0.0.1/str.php?pass[]=1

原文地址:https://www.cnblogs.com/websec/p/7099687.html