Java经典问题解答(9题)

文章目录

    • 1、通关jwt靶场的其中任意两关(该题与Java无关)
      • 启动环境
      • 第4关
      • 第5关
      • 第7关
    • 2、java是如何跨平台通信的
    • 3、java为什么需要类名和文件名一致
    • 4、main函数的作用是什么
    • 5、.class文件和.java是什么关系
    • 6、java在编写函数的时候void是什么意思
    • 7、java声明变量的时候,写int,String是为了申请内存,为什么不直接写内存宽度
    • 8、为什么java有面向对象的概念,请举例说明
    • 9、继承的作用是什么
    • 10、为什么子类要重写父类的方法

1、通关jwt靶场的其中任意两关(该题与Java无关)

启动环境

将文件拷贝到kali虚拟机的桌面,在终端中进入桌面,输入下面命令,安装靶场,端口指定为8888:

sudo java -jar webgoat-server-8.0.0.M17.jar --server.port=8888

如图,启动成功:

在这里插入图片描述

打开bp的内置浏览器,输入127.0.0.1:8888/WebGoat打开靶场网站:

在这里插入图片描述

注册一个账号:

在这里插入图片描述

注册成功后点击Broken Authentication中的JWT token,来到第一关:
在这里插入图片描述

第4关

点击第四关,这一关是一个投票界面,选择Tom用户,然后点击删除按钮,出现一段提示只有管理员可以重置该投票:

在这里插入图片描述

点击删除投票,并用bp抓到post请求包,发送到repeater模块,在cookie字段找到JWT:

在这里插入图片描述

将这段JWT放到JWT解码网站中解码,发现payload载荷信息中用户是Tom,admin字段值是false:

在这里插入图片描述

将这段信息复制到base64加密网站中,将false改为true,并复制加密后除=外的base64密文,并替换原来的payload字段:

在这里插入图片描述

和修改payload方法一样,修改JWT头部的算法类型为none,让它不要加密,替换原来的payload字段:

在这里插入图片描述

将修改后的header和payload字段替换数据包中的cookie字段,注意加上点,这样后端才能识别,点击send发送,提示重置投票成功:

在这里插入图片描述

回到网页刷新,发现票数均变为1:

在这里插入图片描述

第5关

这关给出了JWT,要求修改exp并爆破密钥

在这里插入图片描述

复制这段JWT,vim在桌面新建一个JWT.txt文件,放入复制的密钥:

在这里插入图片描述

用下面命令爆破JWT的密钥,字典用1.txt:

hashcat -m 16500 JWT.txt -a 3 -w 3 1.txt

-a 3 代表蛮力破解

-w 3 可以理解为高速破解,就是会让桌面进程无响应的那种高速

JWT.txt 是我把题目要求破解的 token 保存到的文件

爆破成功,密钥为victory:
在这里插入图片描述

按照题目的要求,修改username为WebGoat,并修改时间戳:

在这里插入图片描述

输入爆破出的密钥:

在这里插入图片描述

将修改后的JWT提交后即可通关:

在这里插入图片描述

第7关

来到第7关,这一关要求冒充Tom用户为另一个无JWT的非法用户付钱
在这里插入图片描述

点击右下角的购买,提示没有JWT:

在这里插入图片描述

用bp抓包,发送到repeater模块,发现该数据包有一个单独存放JWT的Authorization字段:

在这里插入图片描述

右键here,在新窗口打开,可以查看日志:

在这里插入图片描述

复制一个用户的token:

在这里插入图片描述

解码后发现是Tom用户的token:
在这里插入图片描述

将该token在数据包中替换之前抓到数据包的Authorization字段,发送后依然报错,提示我们在日志中找到的JWT已经过期:
在这里插入图片描述

复制Tom用户的exp字段,这里的一串数字就是payload的过期时间戳,复制到网站解码,显示过期时间是2018-5-13:
在这里插入图片描述

用一个新的时间戳:

在这里插入图片描述

替换原来的exp字段,加密后替换原来的payload,由于没有密钥,JWT头部也需要替换,修改后发送,发现提示成功:

在这里插入图片描述

2、java是如何跨平台通信的

如下图,Java文件经过编译变为class文件(字节码文件),然后由Java虚拟机即JVM运行class文件。Linux和Windows都是不能直接识别class文件的,所以需要JVM来运行。

正是由于JVM的存在,所以Java文件可以在不同平台上运行

在这里插入图片描述

3、java为什么需要类名和文件名一致

因为Java虚拟机JVM只认识Java文件中的类名,如果类名和文件名不一致,JVM就无法识别,如下面代码:

public class Hello{public static void main(String[] args){System.out.println("123456");}
}

执行它的hello.java文件:

在这里插入图片描述

4、main函数的作用是什么

main()函数是Java应用程序的入口函数。main函数是Java中格式固定的、能被JVM识别的函数,只有main函数中的代码才能被执行,main()函数的声明为:public static void main(String args[])。必须这么定义,这是Java的规范。如果没有main函数,JVM就不知道如何执行。 如下面的Java代码:

public class Hello{public static void main(String[] args){System.out.println("123456");}
}

它就相当于php中的这段代码:

<?php
echo "123456"
?>

5、.class文件和.java是什么关系

.class 文件可以被视为已编译的 .java 文件。它是在 JVM(Java 虚拟机)上运行的文件。

.java文件只有一个,.class文件不一定只有一个,它的数量取决于.java文件中类的个数,有几个类,编译后就有几个.class文件。

6、java在编写函数的时候void是什么意思

如下图的java代码,void是函数的返回值类型,表示返回值为空,在不需要返回值时使用void。

public class Person{public int age;public String name;public void talk(){System.out.println("Person 说话了");}
}

7、java声明变量的时候,写int,String是为了申请内存,为什么不直接写内存宽度

因为不同类型的变量在内存空间中的存储格式是不同的,不同的存储格式有不同的读取方法,只有声明变量的类型,java程序才知道如何读取存储的数据,如下图是小数在内存空间存储,0.25在内存中的存储也是0和1,只有声明合适的类型才能正确读取。

在这里插入图片描述

8、为什么java有面向对象的概念,请举例说明

因为java是一种面向对象的编程语言。而面向对象是为了解决系统的可维护性,可扩展性,可重用性

面向对象的三大特征是封装、继承和多态,面向对象能有效提高编程的效率。

通过封装技术,消息机制可以像搭积木的一样快速开发出一个全新的系统。

通过使用继承我们能够非常方便地复用以前的代码,能够大大的提高开发的效率。

Java是一个典型的面向对象的编程语言,它属于解释型的语言,由于它只在运行时才逐句进行翻译,所以它引用的变量的类型和该变量调出的类的方法在编程时并不能确定,只能在运行时才能确定,类似于**“薛定谔的猫”,不同的是,这个形态时可以人为引导它“塌陷”**到某一具体的类,这样一来,程序员可以在不修改源代码的情况下,就可以让引用的变量绑定不同的类,从而调用不同的方法,让程序可以选择多个状态,这就是面向对象语言的多态性。

9、继承的作用是什么

避免重复造轮子。子类继承父类的函数,避免了重复写代码。通过使用继承我们能够非常方便地复用以前的代码,能够大大的提高开发的效率。

10、为什么子类要重写父类的方法

如果子类不对分类的方法进行重写,那么子类的方法会完全继承父类,不能达成程序员想要实现的功能,如下面的父类:

public class Person{public int age;public String name;public void talk(){System.out.println("Person 说话了");}
}

继承但未重写的子类:

public class Student extends Person{public void talk(){}
}

子类调用父类的方法:

public class Testpublic static void main(String[] args){Student st1 = new Student ();stl.talk();}
}

输出的结果:

在这里插入图片描述

这样的结果明显不是我们想要的,重写子类:

public class Student extends Person{
public void talk(){System.out.println("Student 说话了");}
}

再次输出,结果为:

在这里插入图片描述

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

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

相关文章

IAM、EIAM、CIAM、RAM、IDaaS 都是什么?

后端程序员在做 ToB 产品或者后台系统时&#xff0c;都不可避免的会遇到账号系统、登录系统、权限系统、日志系统等这些核心功能。这些功能一般都是以 SSO 系统、RBAC 权限管理系统等方式命名&#xff0c;但这些系统合起来有一个专有名词&#xff1a;IAM。 IAM IAM 是 Identi…

Linux UDP编程流程

文章目录 UDP编程流程UDP协议无连接的特点UDP协议数据报的特点 UDP编程流程 UDP 提供的是无连接、不可靠的、数据报服务。服务器端和客户端没有什么本质上的区别。编程流程如下&#xff1a; socket()用来创建套接字&#xff0c;使用 udp 协议时&#xff0c;选择数据报服务 SOC…

小白如何选择阿里云服务器配置?CPU内存带宽系统盘选择

阿里云服务器配置选择_CPU内存/带宽/存储配置_小白指南&#xff0c;阿里云服务器配置选择方法包括云服务器类型、CPU内存、操作系统、公网带宽、系统盘存储、网络带宽选择、安全配置、监控等&#xff0c;阿小云分享阿里云服务器配置选择方法&#xff0c;选择适合自己的云服务器…

PCL 约束Delaunay三角网(C++详细过程版)

目录 一、算法原理二、代码实现三、结果展示1、原始点云2、普通Delaunay3、约束Delaunay本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 首先提取边界点,然后根据边界点构建约束,最后在约束边界内构建Del…

flink 写入数据到 kafka 后,数据过一段时间自动删除

版本 flink 1.16.0kafka 2.3 流程描述&#xff1a; flink利用KafkaSource&#xff0c;读取kafka的数据&#xff0c;然后经过一系列的处理&#xff0c;通过KafkaSink&#xff0c;采用 EXACTLY_ONCE 的模式&#xff0c;将处理后的数据再写入到新的topic中。 问题描述&#xff1…

学习jQuery库的第一天

简介 什么是 jQuery &#xff1f; jQuery 是一个广泛使用的 JavaScript 库。它简化了网页开发中常见的许多任务&#xff0c;例如 HTML 文档遍历、操作 HTML 元素、处理事件、动画效果、Ajax 网络请求等。通过使用 jQuery&#xff0c;开发人员可以更加高效地编写跨浏览器兼容的…

竞赛 基于机器视觉的火车票识别系统

文章目录 0 前言1 课题意义课题难点&#xff1a; 2 实现方法2.1 图像预处理2.2 字符分割2.3 字符识别部分实现代码 3 实现效果最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于机器视觉的火车票识别系统 该项目较为新颖&#xff0c;适合作为竞赛…

C++模版基础

代码地址 gitgithub.com:CHENLitterWhite/CPPWheel.git 专栏介绍 本专栏会持续更新关于STL中的一些概念&#xff0c;会先带大家补充一些基本的概念&#xff0c;再慢慢去阅读STL源码中的需要用到的一些思想&#xff0c;有了一些基础之后&#xff0c;再手写一些STL代码。 (如果你…

RabbitMQ常见问题

一、RabbitMQ如何保证消息不丢失&#xff1f; 这是面试时最喜欢问的问题&#xff0c;其实这是个所有MQ的一个共性的问题&#xff0c;大致的解 决思路也是差不多的&#xff0c;但是针对不同的MQ产品会有不同的解决方案。而RabbitMQ 设计之处就是针对企业内部系统之间进行调用设…

视频监控系统/安防监控/视频AI智能分析:小动物识别算法场景汇总

随着人们对生态环境的关注日益提升&#xff0c;大家对动物保护意识也逐渐增强。旭帆科技智能分析网关小动物识别算法应运而生。除了对保护动物的识别以外&#xff0c;旭帆科技AI智能分析网关还可以识别常见的老鼠等动物&#xff0c;助力明厨亮灶监管&#xff0c;保卫食品安全。…

基于python解决鸡兔同笼问题

一、什么是鸡兔同笼问题&#xff1f; 鸡兔同笼问题是一个经典的数学问题。问题描述&#xff1a;鸡和兔子共有头数a和脚数b&#xff0c;求鸡和兔子的数量。 解析&#xff1a;设鸡的数量为x&#xff0c;兔子的数量为y&#xff0c;那么可以得到以下两个方程&#xff1a; 1. x y…

Hadoop-Hive

1. hive安装部署 2. hive基础 3. hive高级查询 4. Hive函数及性能优化 1.hive安装部署 解压tar -xvf ./apache-hive-3.1.2-bin.tar.gz -C /opt/soft/ 改名mv apache-hive-3.1.2-bin/ hive312 配置环境变量&#xff1a;vim /etc/profile #hive export HIVE_HOME/opt/soft/hive…