• unserialize3


    unserialize3

    看了很多博客,讲的跟哈麻批一样,有的在装杯,有的在不懂装懂有的在人云亦云,原理也是一些陈词滥调,各个参数的意思是什么也没说,让人无法深入且透彻了解,没有实质性的讲解,只为flag而flag,就是一垃圾
    下面我们来讲讲反序列化漏洞,先来了解对象,对象里面有属性和值,序列化就是只保留对象里面的属性和值,生成一段字符串如下:

    O:1:"S":1:{s:4:"test";s:4:"1234";}

    劳资是真的讨厌有些懂也懂鸡巴不到,还在那写writeup或者博客,你写你的博客呢,像这种:

    就是我说的典型的蛤蟆皮,对于一个没有接触过反序列化的人来说看了什么感受,而且他也没讲清楚绕过原理,就真是为了flag而flag

    就拿上述序列化后的字符串来说,依次表示为:

    O:1:"S":1:{s:4:"test";s:4:"1234";}
    O:代表对象
    1:对象名字长度为一个字符
    S:对象名
    1:一个变量
    s:数据类型
    4:变量名字符串长度
    test:变量名
    s:数据类型
    4:变量值字符串长度
    1234:变量值
    

    观察题中源码:

    class xctf{
    public $flag = '111';
    public function __wakeup(){
    exit('bad requests');
    }
    ?code=
    

    易知有一个变量flag,值为111
    还有一个wakeup()函数,触发返回bad requests,那么只需要改变表示变量个数的值不为真实变量的个数的值即可,如:

    O:4:"xctf":1:{s:4:"flag";s:3:"111";}必定触发bad requests

    将xctf后面的1(表示变量个数),改为2,或3,只要不是真实变量的个数的值,即1,都是可以的

    O:4:"xctf":2:{s:4:"flag";s:3:"111";}就可以了

    得到flag:cyberpeace{8f5f22ec383ef3eaf0c5e3861ec55725}

  • 相关阅读:
    strcpy
    Apple Swift中英文开发资源集锦[apple swift resources]
    c/c++指针总结[pointer summary]
    TestPointer
    66. 有序数组构造二叉搜索树[array to binary search tree]
    HDU 2112 HDU Today
    HDU 3790 最短路径问题
    HDU 2544 最短路
    模拟赛 Problem 3 经营与开发(exploit.cpp/c/pas)
    模拟赛 Problem 2 不等数列(num.cpp/c/pas)
  • 原文地址:https://www.cnblogs.com/sillage/p/13929558.html
Copyright © 2020-2023  润新知