1. 布尔反序列化
1 $unserialize_str = $_POST[‘password‘]; 2 $data_unserialize = unserialize($unserialize_str); 3 if($data_unserialize[‘user‘]==‘???‘&&$data_unserialize[‘pass‘]==‘???‘)4 { print_r($flag); }
反序列化后得到的值的user和pass都为不知道的,但是这里是两个==,根据php弱类型,bool值和任何字符串都为相等,即可以构造user和pass的值为bool
即
2.php引用赋值
1 secret = "*"; 18 if ($o->secret === $o->enter) 19 echo "Congratulation! Here is my secret: ".$o->secret; 20 else echo "Oh no... You can‘t fool me"; }21 else echo "are you trolling?"; } ?>
这道题虽然不涉及弱类型,但是涉及到语言中的引用赋值,也是一个点,要使解序列化后的 (secret===enter)
这里是三个等号,要使这两个变量相等,且secret已经被赋值,所以用引用赋值的方式,$a=&$b,则变量a和b指向同一个数据,两个值一定相等
即