win10电脑桌面没有我的电脑图标_网站服务器运行维护

win10电脑桌面没有我的电脑图标的解决方法是:1、首先右键点击桌面,选择【个性化】选项;2、然后选择【主题】选项,接着选择【桌面图标设置】选项;3、最后勾选【计算机】图标即可。

介绍

官方文档中介绍PHP序列化和反序列化如下:

所有php里面的值都可以使用函数serialize()来返回一个包含字节流的字符串来表示。unserialize()函数能够重新把字符串变回php原来的值。 序列化一个对象将会保存对象的所有变量,但是不会保存对象的方法,只会保存类的名字。 为了能够unserialize()一个对象,这个对象的类必须已经定义过。如果序列化类A的一个对象,将会返回一个跟类A相关,而且包含了对象所有变量值的字符串。

简单说序列化是对象转化字符串的过程,反序列化是字符串还原对象的过程。

环境

文章中所述内容使用环境如下:

PHP7.3.1、SDKVSCodeC++和C

在网上公开参数反序列化执行流程已经非常详细,但是对于一些细节地方有一些不足,其中就包括序列化和反序列化之间的语法差异问题。

差异问题

1、序列化

我们通过编译PHP内核源码分析,发现PHP序列化在默认情况下在对象转换中加入:{和}用来拼接成字符串。win10如何更改管理员账户名_网站服务器运行维护

win10更改管理员账户名的方法是:1、首先打开运行窗口,输入【gpedit.msc】,打开组策略;2、然后依次打开【计算机配置】、【windows设置】、【安全设置】、【本地策略】、【安全选项】;3、最后双击【重命名系统管理员账户】即可。

[var.c]

Line:882

static void php_var_serialize_intern()

Line:896

if (ce->serialize(struc, &serialized_data, &serialized_length, (zend_serialize_data *)var_hash) == SUCCESS) {

smart_str_appendl(buf, "C:", 2);

smart_str_append_unsigned(buf, ZSTR_LEN(Z_OBJCE_P(struc)->name));

smart_str_appendl(buf, ":\"", 2);

smart_str_append(buf, Z_OBJCE_P(struc)->name);

smart_str_appendl(buf, "\":", 2);

smart_str_append_unsigned(buf, serialized_length);

smart_str_appendl(buf, ":{", 2);

smart_str_appendl(buf, (char *) serialized_data, serialized_length);

smart_str_appendc(buf, '}');

}

Line:952

smart_str_appendl(buf, ":{", 2);

Line:995

smart_str_appendc(buf, '}');

咱们来看上面这段代码,PHP会使用smart_str_appendl为序列化字符串前后拼接:{和},从var.c的第882行开始进入序列化逻辑。在第896行进行序列化字符串拼接,第952行和第995行,对于内嵌方法进行拼接。

2、反序列化

反序列化是将序列化的字符串,按照一定语法规则进行转化还原。

[var_unserialize.c]

Line:655

static int php_var_unserialize_internal()

Line:674{

YYCTYPE yych;

static const unsigned char yybm[] = {

0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

128, 128, 128, 128, 128, 128, 128, 128,

128, 128, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

0, 0, 0, 0, 0, 0, 0, 0,

};

if ((YYLIMIT - YYCURSOR) < 7) YYFILL(7);

yych = *YYCURSOR;

switch (yych) {

case 'C':

case 'O': goto yy4;

case 'N': goto yy5;

case 'R': goto yy6;

case 'S': goto yy7;

case 'a': goto yy8;

case 'b': goto yy9;

case 'd': goto yy10;

case 'i': goto yy11;

case 'o': goto yy12;

case 'r': goto yy13;

case 's': goto yy14;

case '}': goto yy15;

default: goto yy2;

}

Line:776

yy15:

++YYCURSOR;

{ /* this is the case where we have less data than planned */

php_error_docref(NULL, E_NOTICE, "Unexpected end of serialized data");

return 0; /* not sure if it should be 0 or 1 here? */

}

通过内核代码能够看到第655行进入反序列化,反序列化是利用词法扫描,判断各项符号转换对应对象。能够看到反序列化中对于}进行了处理,处理中只是对计数器加一并没有其他操作。

实际作用

反序列化语法的差异,对于安全防护设备判断反序列化产生很大的影响。在Snort中,有段规则如下:

alert tcp any any -> any [80,8080,443] (uricontent:".php"; pcre:"/\{\w:.+?\}/"; sid:1;

msg:php_serialize;)

在攻击载荷中可以使用大多数字符代替{},从而导致规则失效。

总结

在红队攻击中可以利用PHP序列化和反序列化语法差异,从而达到绕过防护的目的。

在蓝队防御中建议考虑定义中所述不会保存对象的方法,只会保存类的名字。,拦截保存类的名字,以及语法中相同的字符比如冒号进行防御。

相关文章教程分享:网站安全教程

php序列化后换服务器不能解析,利用php序列化和反序列化的语法差异绕过防护_网站服务器运行维护...相关推荐

  1. 服务器运维浏览器,本机浏览器如何访问docker容器的内容_网站服务器运行维护,浏览器,docker...

    docker无法下载镜像怎么办_网站服务器运行维护 docker无法下载镜像的解决方法是:1.运行命令[systemctl stop firewalld]关闭防火墙:2.运行命令[date -s xx ...

  2. 服务器开机显示 efi,win10误删efi启动项无法开机怎么办?_网站服务器运行维护,windows,efi...

    win10虚拟网卡安装失败怎么办?_网站服务器运行维护 win10虚拟网卡安装失败的解决办法:首先依次点击[计算机的属性-设备管理器-网络适配器],查看是否有[虚拟网卡]:然后依次点击[操作-添加过时 ...

  3. 服务器桌面图标显示在哪里打开,电脑桌面图标消失了怎么解决_网站服务器运行维护,电脑,图标...

    电脑繁体字怎么转换成简体字_网站服务器运行维护 电脑繁体字转换成简体字的方法是:1.点击开始按钮,打开控制面板:2.进入个性化选项,点击[窗口颜色],将字体设置为[简体],点击[确定]:3.重启电脑即 ...

  4. 服务器显示屏出现白屏,win10开机白屏不显示桌面怎么办_网站服务器运行维护,win10,白屏,桌面...

    win7如何使用自带录制视频软件?_网站服务器运行维护 win7使用自带录制视频软件的方法:首先打开运行窗口输入cmd:然后管理员界面中输入[psr.exe]或者psr回车确定打开,并在工具上点击开始 ...

  5. 服务器开机显示其他用户,win10系统开机显示其他用户怎么解决_网站服务器运行维护...

    win10如何打开恢复选项_网站服务器运行维护 win10打开恢复选项的方法是:1.首先打开设置界面:2.然后依次打开[更新和安全].[开发者选项]:3.接着勾选[开发人员模式],点击[显示设置],打 ...

  6. windows10服务器维护,win10自动开机设置方法_网站服务器运行维护,win10

    centos系统重启网络失败怎么办_网站服务器运行维护 centos系统重启网络失败的解决方法是:1.首先,执行命令[ip addr]查找HWADDR:2.然后,进入network-scripts目录 ...

  7. win10关机后cpu风扇还在转_win10电脑关机后cpu风扇还在转动_网站服务器运行维护...

    linux之父是谁_网站服务器运行维护 linux之父是"林纳斯·本纳第克特·托瓦兹",​1991年正在赫尔辛基大学读书的"Linus Torvalds"也就是 ...

  8. 服务器里的文件删了在回收站吗,回收站的功能是什么?什么样的文件删除后不能恢复?_网站服务器运行维护,回收站,文件...

    两分钟彻底关闭Windows的更新_网站服务器运行维护 小伙伴们一定遇到过这样的情况,打开电脑就会跳出Windows更新,如果不安装,会每次都跳出,如何彻底关闭Windows更新呢?下面就让我们一起看 ...

  9. 服务器防火墙开启后打不开网站,防火墙开启后windows电脑上不了网怎么办_网站服务器运行维护...

    windows xp是什么操作系统_网站服务器运行维护 windows xp是microsoft推出的供个人电脑使用的操作系统,包括商用及家用的台式电脑等.windows xp是微软首个面向消费者且使 ...

  10. 重启服务器导致网站系统错误,win10怎么总是莫名其妙重启?_网站服务器运行维护...

    win10如何恢复输入法语言栏?_网站服务器运行维护 win10恢复输入法语言栏的方法:1.先打开设置,然后进入"时间和语言":2.点击"区域和语言",接着找到 ...

最新文章

  1. 八皇后时间复杂度_回溯算法 | 追忆那些年曾难倒我们的八皇后问题
  2. 拓扑排序 - 项目管理
  3. 关于大数据你应该了解的五件事儿
  4. Android多线程任务优化1:探讨AsyncTask的缺陷
  5. Vue实现简单图表~满满的干货
  6. html风格的滚动条
  7. SQL Server安装教程
  8. Setting up a EDK II build environment on Windows and Linux:搭建Windows和Linux开发环境[2.2]
  9. 19年6月英语六级第二套听力单词
  10. 七年级上册数学用计算机进行计算,数学北师大版七年级上册用计算器进行运算.doc...
  11. 【安全知识分享】重磅|消防控制室培训.ppt(附下载)
  12. 大数据BI工具Tableau学习【第三期】:数据类型,功能区和卡参考,文件类型(连接方式)
  13. GEE——2018 年南非国家土地覆盖( 20 米分辨率多季节 Sentinel 2 卫星图像生成的)
  14. 室内定位——如何在微信小程序中获取Beacon的RSSI值
  15. 【原创】软件测试工程师-面试感悟-面试经验-面试官思维 分享
  16. 2019年暑期集训总结
  17. 青海湖鸟岛上神气的蛋
  18. 什么是Moodle?
  19. 【机器学习】Scikit-Learn数据预处理文档翻译+笔记记录 - 1
  20. 故障分析 | Greenplum Segment 故障处理

热门文章

  1. 为何超四成人反感大数据应用
  2. python基础(1)——简介与安装
  3. 【C语言】求1000-2000年的闰年,并统计个数
  4. WIN2003 IIS6.0+PHP+ASP+MYSQL优化配置
  5. Firebug 教程
  6. 工作中windows客户端常见问题
  7. Nagios搭建及问题详解(一)
  8. [UnityShader基础]04.ColorMask
  9. iOS商城demo、音乐播放器、视频通话、自定义搜索、转场动画等源码
  10. 二分法查找python的实现