1. 布爾反序列化php
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的值爲boolspa
即code
2.php引用賦值blog
1 <?php 2 class just4fun { 3 4 var $enter; 5 var $secret; 6 } 7 8 if (isset($_GET[‘pass‘])) { 9 10 $pass = $_GET[‘pass‘]; 11 12 if(get_magic_quotes_gpc()){ 13 $pass=stripslashes($pass); 14 } 15 $o = unserialize($pass); 16 if ($o) 17 { $o->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)ip
這裏是三個等號,要使這兩個變量相等,且secret已經被賦值,因此用引用賦值的方式,$a=&$b,則變量a和b指向同一個數據,兩個值必定相等字符串
即get