码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 37 WEB漏洞-反序列化之PHP&JAVA全解(上)


    目录

      • PHP反序列化
      • 演示案例:
        • 先搞一把PHP反序列化热身题稳住-无类问题-本地
        • 在撸一把CTF反序列化小真题压压惊-无类执行-实例
        • 最后顶一把网鼎杯2020青龙大真题舒服下-有类魔术方法触发-实例

    https://www.cnblogs.com/zhengna/p/15661109.html
    代码在线测试平台:https://c.runoob.com/compile/1/

    在这里插入图片描述
    在这里插入图片描述
    序列化和反序列化其实就是数据格式相互转化的一种形式

    PHP反序列化

    原理:未对用户输入的序列化字符串进行检测,导致攻击者可以控制反序列化过程,从而导致代码执行,SQL注入,目录遍历等不可控后果。在反序列化的过程中自动触发了某些魔术方法。当进行反序列化的时候就有可能会触发对象中的一些魔术方法。
    serialize() //将一个对象转换成一个字符串
    unserialize() //将字符串还原成一个对象

    触发:unserialize函数的变量可控,文件中存在可利用的类,类中有魔术方法:
    序列化函数参考文章:https://www.cnblogs.com/20175211lyz/p/11403397.html
    __construct() //创建对象时触发
    __destruct() //对象被销毁时触发!
    __call() //在对象上下文中调用不可访问的方法时触发
    __callstatic() //在静态上下文中调用不可访问的方法时触发
    __get() //用于从不可访问的属性读取数据
    __set() //用于将数据写不可访问的属性
    __isset() //在不可访问的属性上调用isset()或empty()触发
    __unset() //在不可访问的属性上使用unset()时触发
    __invoke() //当脚本尝试将对象调用为函数时触发

    演示案例:

    先搞一把PHP反序列化热身题稳住-无类问题-本地

    基本上很多程序里面都是用class来代表类,有class就是有类,有类的话,就需要学习里面的函数方法
    在这里插入图片描述

    在撸一把CTF反序列化小真题压压惊-无类执行-实例

    反序列化和代码基础没有什么关系,知道序列化执行的情况就完事了,当我们创建一个方法,就会调用里面的东西
    当代码中有这些魔术方法的时候,你就按照特定的条件去触发方法,里面的代码就会被加载执行

    最后顶一把网鼎杯2020青龙大真题舒服下-有类魔术方法触发-实例

    涉及:反序列化魔术方法调用,弱类型绕过,ascii绕过
    使用该类对flag进行读取,这里面能利用的只有__destruct函数(析构函数)。__destruct函数对$this->op进行了===判断并内容在2字符串时会赋值为1,process函数中使用==对$this->op进行判断(为2的情况下才能读取内容),因此这里存在弱类型比较,可以使用数字2或字符串' 2'绕过判断。
    
    is_valid函数还对序列化宇符串进行了校验,因为成员被protected修饰,因此序列化字符串中会出现ascii为0的字符。经过测试,在PHP7.2+的环境中,使用public修饰成员并序列化,反序列化后成员也会被public覆盖修饰。
    
    • 1
    • 2
    • 3
    • 4
    ==仅验证数值,===验证值和类型
    
    • 1
  • 相关阅读:
    Java-IO流之字节输入流(中篇)
    什么是CDN?
    循环执行某段代码,待某种条件满足后停止循环 java原始Timer实现
    FL Studio21中文版本新增功能FL2023完整版
    Git基本应用<一>:Git安装及GitHub连接
    【云原生 • Docker】mysql、tomcat、nginx、redis 环境部署
    C语言实现给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
    MySQL中的随机抽取
    Mysql查询——根据字段值自定义排序
    如何把经验变成可以销售的“知识产品”?
  • 原文地址:https://blog.csdn.net/m0_53008479/article/details/133899126
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号