【面试】记一次安恒面试及总结

news2024/11/17 12:52:32

文章目录

  • SQL 注入
    • sql注入的原理?
    • 如何通过SQL注入判断对方数据库类型?
      • 补充一下其他方法判断数据库类型
    • 时间盲注的函数
    • XPath注入
  • 抓不到http/https包,怎么办?
    • app无自己的ssl证书
    • app有自己的ssl证书-证书绑定(SSL pinning)
  • 逻辑漏洞有哪些
    • 身份验证漏洞
    • 权限类逻辑漏洞
    • 其他类型逻辑漏洞
  • XSS绕过方式
    • 常规插入及其绕过
    • 规则探测及绕过
  • SSRF协议有哪些
  • XXE有了解吗?
  • 域渗透中堡垒机渗透(绕过)
    • 绕过ACL策略
    • 通过堡垒机跳转绕过
    • 其它绕过场景
  • Fastjson
    • fastjson反序列化漏洞
  • Spring 漏洞你知道那些?
  • 黄金票据与白银票据
  • 域前置
  • 总结
  • 参考:

昨天的面试,忘记记录了,趁着还有些记忆特此把自己比较薄弱的知识点整理一下,很多东西答的比较口语化,没来得及背面试题emm,吃一点长一智吧……

SQL 注入

sql注入类型:

Boolean-based blind SQL injection(布尔型注入)
Error-based SQL injection(报错型注入)
UNION query SQL injection(可联合查询注入)
Stacked queries SQL injection(可多语句查询注入)
Time-based blind SQL injection(基于时间延迟注入)

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规则探测
使用无害的payload,类似,,观察响应,判断应用程序是否被HTML编码,是否标签被过滤,是否过滤<>等等;
如果过滤闭合标签,尝试无闭合标签的payload(<b,<i,<marquee)观察响应;
尝试以下的payload

<script>alert(1);</script>
<script>prompt(1);</script>
<script>confirm      (1);</script>
<scriptsrc="http://rhainfosec.com/evil.js">

大小写混合字符

SSRF协议有哪些

http://:探测内网主机存活、端口开放情况
gopher://:发送GET或POST请求;攻击内网应用,如FastCGI、Redis
dict://:泄露安装软件版本信息,查看端口,操作内网redis访问等
file://:读取本地文件

XXE有了解吗?

原理: 解析用户传入的xml
作用: 内网端口扫描、利用file协议等读取文件、攻击内网web应用使用get(struts2等)

危害:
1.导致可以加载恶意外部文件
2.造成文件读取
3.内网端口扫描
4.攻击内网网站
5.发起dos攻击等危害

防御: 过滤用户提交的XML数据、如果你当前使用的程序为PHP,则可以将
libxml_disable_entity_loader设置为TRUE来禁用外部实体,从而起到防御的目的

域渗透中堡垒机渗透(绕过)

关于堡垒机我之前就复现过一个JumpServer RCE
https://blog.csdn.net/weixin_53009585/article/details/129001750
堡垒机:运维审计系统

绕过ACL策略

服务器区防火墙或者交换机上没有做ACL,以及当ACL策略做的细粒度不够,导致用户区PC可以直接绕过堡垒机,直接远程服务器
在这里插入图片描述

通过堡垒机跳转绕过

另外一种场景就是,先通过堡垒机访问A服务器,然后再在A服务器上去访问B服务器,这样就绕过了堡垒机间接访问了B服务器
在这里插入图片描述

其它绕过场景

1、目标服务器远程端口受到ACL限制,但其他端口没有限制,那么最简单的解决方式就可以通过端口转发来绕过
2、甚至如果服务器可以访问外网,可以直接通过向日葵,todesk,Teamviewer进行远程,这样就完全绕开了堡垒机审计
需要对服务器网段封禁向日葵 Teamviewer等远程工具, 这种方式就不详细展开描述了

Fastjson

这里也是没怎么学

fastjson反序列化漏洞

正常请求是get请求并且没有请求体,可以通过构造错误的post请求,即可查看在返回包中是否有fastjson该字符串来判断
漏洞利用原理:
在请求包里面中发送恶意的json格式payload,漏洞在处理json对象的时候,没有对@type字段进行过滤,从而导致可以传入恶意的TemplatesImpl类,二这个类有一个字段就是_bytecodes,有部分函数会根据_byteencodes生成java实例,这就达到fastjson通过字段传入一个类,再通过这个类被生成时执行构造函数
无回显怎么办?
1、一种是直接将命令执行结果写入到静态资源文件中,如html、js等,然后通过http访问就可以直接看到结果
2、通过dnslog进行数据外带,但如果无法执行dns就无法验证了
3、直接将命令执行结果回显到请求POC的http响应中

Spring 漏洞你知道那些?

这里还是了解的不多,问到了才尴尬啊
CVE-2010-1622 Spring Framework class.classLoader 类远程代码执行
CVE-2013-4152 Spring Framework 中的 XML 外部实体(XXE)注入
CVE-2014-3527 Spring Security 验证绕过漏洞
CVE-2014-3578 Spring Framework 目录遍历漏洞
CVE-2016-6652 Spring Data JPA SQL 盲注
CVE-2018-1271 Spring MVC 目录穿越漏洞
CVE-2020-5405 Spring Cloud Config路径穿越导致的信息泄露
……
这么多我就回答一个敏感信息泄露

黄金票据与白银票据

这是刚学到啊,今天就学ing

域前置

还没学到啊emmm

总结

面试整体围绕简历上内容来提问,因为实习岗所以问的难度比较浅,但是范围还是蛮广的,通过面试来检测自己当前学习的状况还是挺不错的

参考:

https://www.cnblogs.com/Fluorescence-tjy/p/10400588.html
https://www.freebuf.com/articles/endpoint/359208.html
https://cloud.tencent.com/developer/article/1906218
https://blog.csdn.net/m0_38103658/article/details/105481323

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

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

相关文章

【学习笔记】滑动窗口

acwing.滑动窗口https://www.acwing.com/problem/content/156/ 给定一个大小为 n≤106≤106 的数组。 有一个大小为 k 的滑动窗口&#xff0c;它从数组的最左边移动到最右边。 你只能在窗口中看到 k 个数字。 每次滑动窗口向右移动一个位置。 以下是一个例子&#xff1a; …

Python使用Opencv进行图像人脸、眼睛识别实例演示

效果展示 下面使用 haarcasecade_eye.xml 进行人眼识别的效果图&#xff1a; 人脸识别是一种可以自动检测图像或视频中存在的人脸的技术。它可以用于各种应用&#xff0c;例如安全控制&#xff0c;自动标记照片和视频&#xff0c;以及人脸识别解锁设备等。在这篇博客中&#…

水声功率放大器模块基于通道接收和发射的水声通信机的应用

实验名称&#xff1a;基于多通道接收和发射的水声通信机 研究方向&#xff1a;水声通信 测试设备&#xff1a;数模转化器、ATA-ML180水声功率放大器模块、示波器、接收换能器、发射换能器等。 图&#xff1a;实验原理 一、发射机的双通道发送实验&#xff1a; 实验过程&#xf…

Redis与本地缓存组合使用(IT枫斗者)

Redis与本地缓存组合使用 前言 我们开发中经常用到Redis作为缓存&#xff0c;将高频数据放在Redis中能够提高业务性能&#xff0c;降低MySQL等关系型数据库压力&#xff0c;甚至一些系统使用Redis进行数据持久化&#xff0c;Redis松散的文档结构非常适合业务系统开发&#xf…

探索六西格玛在医疗行业的应用,提升医疗企业的市场竞争力

六西格玛是一种基于数据的管理方法&#xff0c;旨在通过对医疗流程和服务进行量化分析和改进&#xff0c;以优化医疗企业的运营和管理。它能够有效地解决医疗企业面临的各种问题和挑战&#xff0c;提高医疗服务的质量和效率&#xff0c;降低医疗成本和风险&#xff0c;增强医疗…

Linux: 性能分析之内存增长和泄漏

文章目录1. 前言2. 背景3. 内存增长和泄漏分析方法3.1 跟踪 malloc(), free() 等接口3.1.1 用 perf 采样3.1.2 用 ebpf 来跟踪3.2 跟踪 brk() 调用3.2.1 使用 perf 跟踪 brk()3.2.2 使用 ebpf 跟踪 brk()3.3 跟踪 mmap() 调用3.3.1 使用 perf 跟踪 mmap()3.3.2 使用 ebpf 跟踪 …

【FPGA】多功能ALU

目录 实验要求 源代码 顶层模块 数据输入模块 ALU运算模块 结果处理模块 扫描数码管模块 扫描数码管顶层 分频器 数码管显示 仿真代码 结构层图 管脚配置 实验板卡&#xff1a;xc7a100tlc sg324-2L&#xff0c;共20个开关 实验要求 通过高低位控制&#xff0c;实现32位数…

74-快速排序——一路快排

快速排序是影响二十世纪最伟大的排序算法之一。 JDK的双轴快速排序就是对快排的优化&#xff0c;本质还是快排。 从待排序区间选择一个数&#xff0c;作为基准值/分区点&#xff08;pivot&#xff09;&#xff0c;此时默认选择数组的第一个元素作为比较的基准值。partition&a…

【 SpringBoot 配置⽂件 】

文章目录一、配置⽂件作⽤二、配置文件格式2.1 特殊说明2.2 为配置⽂件安装提示插件三、properties 配置⽂件说明3.1 properties 基本语法3.2 读取配置⽂件3.3 解决 properties 中文乱码3.4 properties 缺点分析四、yml 配置⽂件说明4.1 yml 基本语法4.2 yml 配置读取4.3 yml 使…

前后端分离——SpringBoot+Vue——3天速成企业级项目

前后端分离——SpringBootVue使用到的技术&#xff1a;vue3&#xff08;区别vue2&#xff09;前言vue2 vs vue3双向绑定更新实例化生命周期获取props数据和方法的定义watchEffect那么什么是 watchEffect &#xff1f;组件通信注意attrs和listeners路由vue3路由写法&#xff1a;…

ROS学习——艰辛的环境安装之路一VMware

文章目录VMware 安装下载安装VMware 安装 一些没用的介绍&#xff1a; VMware Workstation中文版是一个“虚拟 PC”软件。它使你可以在一台机器上同时运行二个或更多 Windows、DOS、LINUX 系统。与“多启动”系统相比&#xff0c;VMWare 采用了完全不同的概念。多启动系统在一…

《Web前端应用开发》考试试卷(模拟题)

一、产品搜索页面 打开“考试文件夹”中的input.html&#xff0c;完成以下步骤&#xff1a; 注意&#xff1a;本题仅能在input.html的&#xff08;1&#xff09;为产品名称所在的div添加样式属性&#xff0c;使得产品名称保持在文本框的左边&#xff1b; &#xff08;2&#xf…

PPT NO.1【用ppt如何做一张海报+字体】

PPT做得好的人&#xff0c;一定是站在观众的角度思考的人。 1、设置幻灯片尺寸大小&#xff1a; 设置完成后如下&#xff1a; 2、加载一张自己喜欢的图片进来&#xff1a;【图片越高清越好】 将图片铺满空白的地方&#xff0c;调整好自己喜欢的区域&#xff1a; 做裁剪&#xf…

数据结构修炼第一篇:时间复杂度和空间复杂度

系列文章目录 第一章 时间复杂度和空间复杂度 第二章 顺序表&#xff0c;列表 第三章 栈和队列 第四章 二叉树 第五章 排序 目录 系列文章目录 &#x1f3c6;文章目录 &#x1f3c6;前言 &#x1f3c6;一、算法的复杂度 &#x1f3c6;二、时间复杂度的概念 大0渐进 作…

【Go语言从入门到精通系列-基础篇】Go安装 + 语言特性,以及开启你人生中的第一个go程序

系列文章 【Go语言从入门到精通系列-基础篇】Go安装 语言特性&#xff0c;以及开启你人生中的第一个go程序 【Go语言从入门到精通系列-基础篇】Go语言包的管理以及基础语法与使用。 Go语言从入门到精通系列-基础篇系列文章前言第一章 Go语言开发基础1.1 Go语言的优势1.2 Go语…

C语言快速排序非递归实现

目录 栈的辅助&#xff08;栈的实现可以调用之前实现的数据结构&#xff09;&#xff1a; 1&#xff0c;初始状态 2&#xff0c;循环 3&#xff0c;终止 4&#xff0c;注意 小点&#xff1a; 1&#xff0c;递归的使用会造成栈空间的消耗&#xff0c;使用递归&#xff0c;…

刷题day51:重新安排行程 ***

题意描述&#xff1a; 给你一份航线列表 tickets &#xff0c;其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK&#xff08;肯尼迪国际机场&#xff09;出发的先生&#xff0c;所以该行程必须从 …

【宝塔邮局管理器】使用教程、Email配置

1.安装宝塔邮局插件前&#xff0c;需要先安装redis服务&#xff0c;并设置redis密码。 安装完Redis服务后设置密码&#xff0c;设置密码时不要使用&%这类特殊符号 会导致负载状态显示异常&#xff0c;可使用英文数字组合密码 PS&#xff1a;邮局的反垃圾模块 rspamd服务需要…

Spring Cloud快速入门

文章目录Spring Cloud快速入门一、基础概念1、微服务架构2、微服务技术栈3、什么是Spring Cloud?4、Spring Cloud和Spring Boot的联系&#xff1f;5、比较成熟的互联网架构二、Rest环境搭建1、搭建提供者1.1、创建一个父工程1.2、创建一个springcloud-api模块1.3、创建一个spr…

SSM学习记录3:响应(注释方式 + SprigMVC项目 + 2022发布版本IDEA)

响应 ResponseBody注解的作用是将当前控制器中方法的返回值作为响应体 1.返回页面 无需在方法上进行ResponseBody注解&#xff0c;只需RequestMapping匹配地址&#xff0c;并且返回值为带后缀的页面名字符串 前面学习中除了json数据&#xff0c;所有带ResponseBody注解的方法…