zoukankan      html  css  js  c++  java
  • 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指向同一个数据,两个值一定相等

  • 相关阅读:
    解决哈希(HASH)冲突的主要方法
    破解
    打工
    [JSOI2007]麻将
    [JSOI2007]建筑抢修
    [HAOI2007]上升序列
    [HAOI2007]覆盖问题
    [CQOI2017]小Q的棋盘
    [HEOI2015]兔子与樱花
    [HEOI2015]定价
  • 原文地址:https://www.cnblogs.com/tr1ple/p/7485153.html
Copyright © 2011-2022 走看看