zoukankan      html  css  js  c++  java
  • PHP序列化与反序列化(二)

    题目(攻防世界):

    __construct和__destruct的魔术方法是默认执行的,我们可以忽视他们,__wake up执行以后会返回当前主页上,需要绕过,下面的正则匹配preg_match也需要绕过,flag在f14g.php里

    绕过之后就需要传个var的值,值为base64编码以后的序列化


    __wakeup()魔术方法

    unserialize() 会检查是否存在一个 __wakeup() 方法。如果存在,则会先调用 __wakeup 方法,预先准备对象需要的资源。 

    __wakeup 百度一下  发现这是一个CVE漏洞 ==》当成员属性数目大于实际数目时可绕过wakeup方法(CVE-2016-7124)

    正则匹配的话在对象长度之前添加一个+号可以绕过

    先运行代码,返回序列化之后的内容

    这里我们其实发现了问题,参数名Demofile的长度为10,可是双引号里面只有8个字符,剩下两个跑哪去了?

    于是我又拿到在线编译器去编译:

    发现空格存在

    不过即使你把空格加上了,最后出来的编码也是错的,我用phpstorm和base64在线编码都试过(我找了很久也没有发现问题在哪里)

    按照上面说的绕过,然后拿去编码(错误范本):

    比较大佬的代码(下一行):

    就是那两个字符出的问题

    不管拿去url里面get传参,得到flag

    [Sign]做不出ctf题的时候很痛苦,你只能眼睁睁看着其他人领先你
  • 相关阅读:
    vue+vuex构建单页应用
    vue如何做分页?
    cookie和session的原理机制
    经常遇到js的面试题
    CSS浏览器兼容性问题解决方法总结
    前端性能优化----yahoo前端性能团队总结的35条黄金定律
    bom对象
    正则表达式
    JavaScript
    常见浏览器bug以及解决方法
  • 原文地址:https://www.cnblogs.com/echoDetected/p/12336205.html
Copyright © 2011-2022 走看看