Web攻防-PHP反序列化&字符逃逸&增多减少&成员变量属性&解析不敏感&Wakeup绕过

知识点:

1、WEB攻防-PHP反序列化-CVE&wakeup绕过

2、WEB攻防-PHP反序列化-PHP版本绕过机制

3、WEB攻防-PHP反序列化-字符增多减少逃逸

一、演示案例-WEB攻防-PHP反序列化-CVE&wakeup绕过

PHP版本绕过漏洞
CVE-2016-7124__wakeup绕过)

漏洞编号:CVE-2016-7124

影响版本:PHP 5<5.6.25; PHP 7<7.0.10

漏洞危害:如存在__wakeup方法,调用unserilize()方法前则先调用__wakeup方法,但序列化字符串中表示对象属性个数的值大于真实属性个数时会跳过__wakeup执行

Demo





极客大挑战 2019PHP

1、下载源码分析,触发flag条件




2、分析会触发调用__wakeup 强制username值

3、利用语言漏洞绕过 CVE-2016-7124

4、构造payload后 修改满足漏洞条件触发


bash 复制代码
Payload:
select=O%3A4%3A%22Name%22%3A3%3A%7Bs%3A14%3A%22%00Name%00username%22%3Bs%3A5%3A%22admin%22%3Bs%3A14%3A%22%00Name%00password%22%3Bs%3A3%3A%22100%22%3B%7D

二、演示案例-WEB攻防-PHP反序列化-PHP版本绕过机制

bash 复制代码
当对象变量属性不同就会导致序列化后数据格式差异

对象变量属性:
public(公共的):在本类内部、外部类、子类都可以访问
protect(保护的):只有本类或子类或父类中可以访问
private(私人的):只有本类内部可以使用

序列化数据显示:
public属性序列化的时候格式是正常成员名
private属性序列化的时候格式是%00类名%00成员名
protect属性序列化的时候格式是%00*%00成员名

Demo

bash 复制代码
<?php
class Test
{
    public $sex = "man";
    private $name = "xiaodi";
    protected $age = "33";
}
$t=new Test();
print_r(serialize($t));

PHP版本绕过机制(解析不敏感)

PHP版本导致的属性不同反序列化解析差异

影响版本:PHP7.1+及以上

bash 复制代码
<?php
class test{
    protected $a;
    private $b;
    public function __construct(){
        $this->a = 'abc';
    }
    public function __destruct(){
        echo $this->a;
    }
}
 
echo serialize(new test());
unserialize('O:4:"test":1:{s:1:"a";s:3:"abc";}');





网鼎杯 2020 青龙组AreUSerialz

1、__destruct()--> process()-->read()



2、绕过is_valid()函数,private和protected属性经过序列化都存在不可打印字符在32-125之外

因为protected属性在序列化之后会出现不可见字符\00*\00,%00字符的ASCII码为0,不符合上面的要求。

bash 复制代码
public $op=2;
public $filename="php://filter/read=convert.base64-encode/resource=flag.php";
public $content;



三、演示案例-WEB攻防-PHP反序列化-字符增多减少逃逸

字符增多

str1.php


原理解释







运算思路:字符个数多了1

后续有47个就写47个覆盖后续

str1-pop.php



字符变少

str2.php

str2-pop.php




运算思路:字符个数少了1个(5位变4位)

思考写多个就截取后续多少个,如23个、22个等

CTFSHOW-Web262(逃逸解法)

解题思路:提示有message.php

其中获取msg获取f,m,t 要求token=admin

字符增多通过本地序列化发现62位需要覆盖




相关推荐
两个人的幸福2 天前
Windows 桌面应用自研 PHP 队列(下):完整代码与六大工程化优化
php
BingoGo5 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
JaguarJack5 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
用户3074596982075 天前
PHP 扩展——从入门到理解
php
鹏仔先生6 天前
拷贝漫画APP下载页PHP程序,后台带免费AI写作
php
云水一下6 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
xingpanvip6 天前
星盘接口开发文档:本命盘接口指南
android·开发语言·css·php·lua
酉鬼女又兒6 天前
零基础入门计算机网络运输层:端到端通信核心作用、端口号分类规则、复用分用工作机制及UDP与TCP协议全方位对比详解
网络·网络协议·tcp/ip·计算机网络·考研·udp·php
dog2506 天前
不要再继续优化 TCP
网络协议·tcp/ip·php
Channing Lewis6 天前
PHP 解析 Excel 的那些坑:一次“行号错位”引发的数据丢失
开发语言·php·excel