php Array === Array compare bug
Example Code
<?php $arr = ['admin', 'password']; $auth = $_GET['auth']; if( $arr === $auth && $auth[0] != 'admin'){ echo 'Hello admin!'; } else { echo 'login plz'; }
위와 같은 코드가 있을 때,
2번째 줄 $arr의 0번째인자가 admin으로 박혀있고,
3번째 줄에선 $auth와 $arr의 키/값 순서까지 일치해야 true여야하고(identity), $auth[0]이 admin이 아니여야 Hello admin!이 뜨게 된다.
하지만 ?auth[4294967296]=admin&auth[1]=password
를 입력하게 되면 32bit int의 표현의 한계의 의해 auth[4294967296]
가 auth[0]
으로 들어가게 되어 해당 if 문을 통과 할 수 있게된다.