ctf常見php弱類型分析

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 <?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)

這裏是三個等號,要使這兩個變量相等,且secret已經被賦值,所以用引用賦值的方式,$a=&$b,則變量a和b指向同一個數據,兩個值一定相等

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章