2024年最全【面试】记一次安恒面试及总结_安恒信息公司java面试,java开发应届生面试题

分享

首先分享一份学习大纲,内容较多,涵盖了互联网行业所有的流行以及核心技术,以截图形式分享:

(亿级流量性能调优实战+一线大厂分布式实战+架构师筑基必备技能+设计思想开源框架解读+性能直线提升架构技术+高效存储让项目性能起飞+分布式扩展到微服务架构…实在是太多了)

其次分享一些技术知识,以截图形式分享一部分:

Tomcat架构解析:

算法训练+高分宝典:

Spring Cloud+Docker微服务实战:

最后分享一波面试资料:

切莫死记硬背,小心面试官直接让你出门右拐

1000道互联网Java面试题:

Java高级架构面试知识整理:

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

sql注入的原理?

产生sql注入的根本原因在于代码中没有对用户输入项进行验证和处理便直接拼接到查询语句中。利用sql注入漏洞,攻击者可以在应用的查询语句中插入自己的SQL代码并传递给后台SQL服务器时加以解析并执行。

如何通过SQL注入判断对方数据库类型?

这个是真没答上来啊,下面是在网上收集的答案
1、数据库特有连接符判断

id=1 and ‘1’+’1’=’11’ #MySQL或者是MSSQL
id=1 and concat(‘1’,’1’)=’11’ #MySQL或者Oracle
id=1 and ‘1’||’1’=’11’ #Oracle

MySQL和Oracle使用concat函数进行字符串拼接,而MSSQL和Oracle使用‘+’运算符进行字符串拼接。使用这些语句用来判断正在运行的数据库类型。

2、特有数据表判断

id=1 and (select count(*) from sys.user_tables)>0 and 1=1 #Oracle
id=1 and (select count(*) from information_schema.TABLES)>0 and 1=1 #MySQL5.0以上
id=1 and (select count(*) from sysobjects)>0 and 1=1 #MSSQL
id=1 and (select count(*) from msysobjects)>0 and 1=1 #access数据库

不同数据库含有特定的表或对象,并在任何情况下返回true值。Oracle使用sys.user_tables,而MySQL使用information_schema.TABLES,MSSQL使用sysobjects,Access使用msysobjects,这些都是元数据表或对象的名称。通过注入这样的语句并观察其响应,攻击者可以了解目标网站使用哪种类型的数据库系统。
3、特定函数判断
len和length
len():SQL Server 、MySQL以及db2返回长度的函数。
length():Oracle和INFORMIX返回长度的函数。

version和@@version
version():MySQL查询版本信息的函数
@@version:MySQL和SQL Server查询版本信息的函数

substring和substr
MySQL两个函数都可以使用
Oracle只可调用substr
SQL Server只可调用substring
4、特殊符号进行判断
/*是MySQL数据库的注释符
–是Oracle和SQL Server支持的注释符
;是子句查询标识符,Oracle不支持多行查询,若返回错误,则说明可能是Oracle数据库
#是MySQL中的注释符,返回错误则说明可能不是MySQL,另外也支持-- 和/**/

5、根据盲注特别函数判断
MYSQL

BENCHMARK(1000000,ENCODE('QWE','ASD'))
SLEEP(5)

PostgreSQL

PG_SLEEP(5)
GENERATE_SERIES(1,1000000)

SQL Server

WAITFOR DELAY '0:0:5'

6、通过报错提示内容判断
在注入点后直接加上单引号,根据服务器的报错信息来判断数据库。
错误提示Microsoft JET Database Engine 错误 ‘80040e14’,说明是通过JET引擎连接数据库,则表明数据库为ACCESS数据库,如果是ODBC的话则说明是MSSQL数据库。

补充一下其他方法判断数据库类型

1、根据开发语言判断数据库类型

asp:SQL Server,Access
.net:SQL Server
php:MySQL,PostgreSQL
java:Oracle,MySQL

2、端口判断
关系型数据库:
Oracle数据库默认端口号为,1521;
MySQL数据库默认端口号为,3306;
SQLServer数据库默认端口号为,1433;
postgreSQL数据库默认端口号为,5432;

NOSQL数据库:
MongoDB默认端口号为:27017;
Redis默认端口号为:6379;
memcached默认端口号为:11211;

时间盲注的函数

我好像就说了一个sleep() emmm
1、原理
由于服务器端拼接了SQL语句,且正确和错误存在同样的回显,即是错误信息被过滤,可以通过页面响应时间进行按位判断数据。由于时间盲注中的函数是在数据库中执行的,但是sleep函数或者benchmark函数的过多执行会让服务器负载过高
2、还有一个benchmark函数
在这里插入图片描述

XPath注入

1、原理
XPath注入是一种Web应用程序攻击方式,类似于SQL注入。攻击者可以利用XPath语言的强大功能,向Web应用程序发送恶意负载,以获取未经授权的信息或执行未经授权的操作。
攻击者可以在表单字段、URL参数和HTTP头中注入恶意XPath表达式。这些表达式可以被解释为查询XML文档中的节点或属性。如果Web应用程序没有正确地过滤输入数据,攻击者就可以将XPath注入负载嵌入到查询中,并从XML文档中检索敏感
2、利用
以一个普通实例来说,//users/user[username/text()= ’ ’ or ‘1’ or ‘1’ and password/text()=‘’],
这个字符串会在逻辑上使查询一直返回 true 并将一直允许攻击者访问系统。攻击者可以利用 XPath 在应用程序中动态地操作 XML 文档。攻击完成登录可以再通过XPath盲入技术获取最高权限账号和其它重要文档信息。延展开来,xpath的注入还有很多花样,像是通过updataxml()函数实现xpath报错注入,还有xpath的盲注。

抓不到http/https包,怎么办?

还能怎么办,平时这种带防护的小程序或app直接放弃了啊!,提问的目的应该是让我说出绕过的方法

不会是导出ssl证书这么简单吧?这点我还忘了说了
以下是找到的相关抓包方法

app无自己的ssl证书

有的app由于资金有限,所以不会去申请自己的ssl证书,就直接使用和浏览器一样的ssl证书,这个我们直接在安卓模拟器安装burp的ssl证书就能绕过

app有自己的ssl证书-证书绑定(SSL pinning)

SSL Pinning是一种安全机制,用于确保移动应用程序与特定服务器建立的SSL连接始终是安全的。它通过比较服务器的公钥指纹是否与预定义的指纹匹配来实现这一目的。在SSL Pinning中,应用程序会存储预先定义的服务器证书或公钥指纹,并在建立SSL连接时强制要求服务器提供匹配的证书或公钥指纹,以确保通信的安全性。这样可以有效地防止基于中间人攻击(Man-in-the-middle attack)的安全威胁。

证书绑定又叫单向认证,app不使用公开的ssl证书了,花钱去找证书颁发机构,去买一个属于自己的证书,并且自己设置了一个通信的密钥(密码)

Burp是抓应用层的包,不会抓其他层的包,由于burp没安装专属于这个app的ssl证书,burp抓到的是乱码的数据无法识别出是http的请求,burp会默认他为其他层的数据包,就不去抓这个包,导致无法抓包

绕过方法:
1、把App里面的证书揪出来,app和抓包软件的通信用那个证书。
2、删除掉App里面,单向认证的代码,让他能使用系统证书,然后他和抓包软件就能通信了。
揪证书需要逆向,很难,第二种可以使用工具进行hook,类似于断点处理
在已经安装好证书和ypn的情况下操作

使用工具hook有两种方法
1、 Xposed框架中的JustTrustMe
JustTrustMe在测试的时候会自动对app所有具有单向认证的地方进行hook
2、 objection绕过单向认证

逻辑漏洞有哪些

身份验证漏洞

暴力破解漏洞
可以针对用户名进行错误次数计算,高于一定阈值账号锁定一段时间,或者添加验证码
但是不能永久锁定,可能被用来进行账户恶意锁定
Session固定攻击
Cookie欺骗漏洞
漏洞介绍:通过伪造cookie信息能够伪造其他用户进行登录。
漏洞原理:开发者为了方便将身份信息/登录信息明文或者只是简单编码、哈希之后存放在cookies中,网站通过获取得到的cookies进行授权或者身份验证
漏洞点:cookie中有明显或者只是简单编码、哈希的字段时候 修改lsLogin值为1可以判定为用户已经登录
漏洞修复: Cookie不应该存储可理解的身份信息和登录信息,cookie对身份信息和登录信息的存储只能通过存储足够长度的随机字符串进行,避免篡改

权限类逻辑漏洞

平行权限跨越
垂直权限跨越
未经授权访问

图形验证码漏洞
找回密码逻辑漏洞
业务数据篡改漏洞
执行顺序逻辑漏洞

其他类型逻辑漏洞

条件竞争漏洞
数据包重放漏洞

XSS绕过方式

常规插入及其绕过

Script 标签
绕过进行一次移除操作:

<scr<script>ipt>alert("XSS")</scr<script>ipt>

Script 标签可以用于定义一个行内的脚本或者从其他地方加载脚本:
JavaScript 事件
我们可以像如下这样在元素中定义 JavaScript 事件:

<div οnclick="alert('xss')">

绝大部分的事件都被过滤器所移除了,但是依旧还有少量事件没有被过滤,

<divοnmοuseenter="alert('xss')">当用户鼠标移动到 div 上时就会触发我们的代码。

另一个绕过的办法就是在属性和= 之间插入一个空格:

<div onclick ="alert('xss')">

行内样式(Inlinestyle)
利用字符编码

%c1;alert(/xss/);//

绕过长度限制

"οnclick=alert(1)//
"><!--
--><script>alert(xss);<script>

过滤空格
策略:/**/,注释符号绕过;/符号绕过;

例:<img/src/onerror=alert(1)>

规则探测及绕过

WAF规则探测

总结

这个月马上就又要过去了,还在找工作的小伙伴要做好准备了,小编整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家

在这里插入图片描述

在这里插入图片描述

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

做好准备了,小编整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家

[外链图片转存中…(img-WfCnnX4a-1715099081176)]

[外链图片转存中…(img-XImOXgZs-1715099081177)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值