zoukankan      html  css  js  c++  java
  • [极客大挑战 2019]PHP 反序列化

    1.  题目主页为一个很鬼畜的猫猫,会跟着鼠标晃头

    题目说猫猫会踩键盘,所以作者每次都会机制的备份文件,所以这里想到了有备份文件。

     一开始使用dirsearch找,发现都是429请求过多,看样子不能自动扫备份文件,根据经验尝试一下 www.tar www.zip等等,运气比较好的是www.zip为备份文件,下载下来看看。

    2.  遍历各个文件,flag.php内的flag是假的,较为有用的是index.php和class.php。

    其中index.php关键代码:

    这里可以看出,index.php包含了class.php,接受get传参给select,随后序列化处理。

    class.php关键代码

     class.php中,定义了Name类,有两个私有变量username和password,随后定义了_construct(),_wakeup(),_destruct()函数,分别为,建立对象时会调用的函数,反序列化时首先调用的函数,和析构前调用的函数。

    代码审计后发现传入的对象必须为username=admin且password=100才能输出正确的flag,于是构造序列化字符串

     

     由于对象变量为私有变量,序列化后会产生不可见字符%00,将其填入序列化后的字符串中。

    3.  在提交参数前,需要注意,反序列化后首先会调用_wakeup()函数,所以需要将序列化后{前的数字改大,大于类中的变量数,利用php序列化的特性,即可绕过_wakeup函数,不提前为变量赋值。

    O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}

    payload:

    ?select=O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}
  • 相关阅读:
    Ubuntu 8.04安设nVidia新版表现驱动
    特性化设置你的linux环境
    Ubuntu 8.04 去失踪文泉驿的点阵字形的方法
    Fedora Nightlife项目 扶助较劲争论机的空闲
    Ubuntu显卡驱动不精确,进入黑屏的处置装备
    Linux中翻开带flash网页主动封锁的处理办法
    Firefox 3 Alpha 5
    Ubuntu 8.04无法正常关机成就处置惩罚
    Redhat Enterprise Linux 5.2 公布了
    KOffice 1.6.3
  • 原文地址:https://www.cnblogs.com/cmredkulaa/p/14551854.html
Copyright © 2011-2022 走看看