当前位置: 首页 > article >正文

奇安信2面面试题。。。

《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token=1860256701&lang=zh_CN

5000篇网安资料库https://mp.weixin.qq.com/s?__biz=MzkwNjY1Mzc0Nw==&mid=2247486065&idx=2&sn=b30ade8200e842743339d428f414475e&chksm=c0e4732df793fa3bf39a6eab17cc0ed0fca5f0e4c979ce64bd112762def9ee7cf0112a7e76af&scene=21#wechat_redirect

1. 文件上传绕过 WAF 的手段

答案:
常见绕过方法包括:

  1. Content-Type 修改:如将 application/php 改为 image/jpeg

  2. 文件头伪造:在文件开头添加图片标识(如 GIF89a)。

  3. 后缀名绕过
    • 大小写混淆(如 PhP)。

    • 双后缀(如 test.php.jpg)。

    • 空字节截断(如 test.php%00.jpg)。

  4. 特殊解析漏洞:利用服务器解析特性(如 Apache 的 .htaccess 控制文件类型)。

  5. 分块传输编码(Chunked):通过畸形的 HTTP 请求绕过 WAF 检测。

2. 越权漏洞你了解么?

答案:
越权分为两类:

  1. 水平越权:同一权限用户访问他人资源。
    • 例如:用户 A 通过修改 URL 中的 ID 访问用户 B 的数据(/userinfo?id=2)。

  2. 垂直越权:低权限用户执行高权限操作。
    • 例如:普通用户通过篡改接口调用管理员功能(如删除用户)。
      防御:对每次请求进行权限校验,避免依赖前端参数判断身份。

3. 聊一聊逻辑漏洞

答案:
逻辑漏洞是业务逻辑设计缺陷导致的漏洞,常见类型:

  1. 验证码绕过:验证码可重复使用或未绑定会话。

  2. 密码重置漏洞:通过修改参数(如 user_id)重置他人密码。

  3. 条件竞争:并发请求绕过限制(如余额不足时多次提现)。

  4. 业务顺序绕过:未完成支付却生成订单。
    案例:某平台优惠券领取未限制次数,导致可无限领取。

4. Shiro 反序列化漏洞原理

答案:
Shiro 的 rememberMe 功能将用户信息序列化后加密存储在 Cookie 中。漏洞成因:

  1. 硬编码密钥:Shiro 默认使用固定 AES 密钥(如 kPH+bIxk5D2deZiIxcaaaA==)。

  2. 反序列化触发:攻击者构造恶意序列化数据,用泄露的密钥加密后发送,Shiro 解密后触发反序列化执行任意代码。
    利用工具:Shiro-550(密钥泄露)、Shiro-721(Padding Oracle 攻击)。

5. Fastjson 反序列化漏洞原理

答案:
Fastjson 在解析 JSON 时通过 @type 指定类名,自动调用 setter/getter 方法。漏洞利用:

  1. 攻击者构造恶意 JSON,指定 @typecom.sun.rowset.JdbcRowSetImpl

  2. 设置 dataSourceName 为恶意 JNDI 地址(如 ldap://attacker.com/Exploit)。

  3. 触发 JNDI 查询,加载远程恶意类,实现 RCE。
    关键点:Fastjson 的 autoType 特性未严格限制类名。

6 JdbcRowSetImpl 类的具体作用

答案:
JdbcRowSetImpl 是 JDBC 中用于封装数据库查询结果集的类。其 setDataSourceName()setAutoCommit() 方法可触发 JNDI 查询。当 autoCommit 被设置为 true 时,会自动连接 dataSourceName 指定的地址,导致 JNDI 注入。

7. PHP 的 POP 链

答案:
POP(Property-Oriented Programming)链通过串联魔术方法构造利用链。
示例(Monolog 库漏洞):

  1. 入口点__destruct() 方法触发文件删除操作。

  2. 串联调用:通过 __toString() 方法调用其他对象的 write() 方法。

  3. 最终执行:调用 file_put_contents() 写入 Webshell。
    利用代码片段

// 构造恶意对象链  
$obj = new ExampleClass();  
$obj->data = new AnotherClass();  
$obj->data->callback = "system";  
$obj->data->args = "id";  

http://www.kler.cn/a/599023.html

相关文章:

  • 基于Python的智慧金融风控系统的设计与实现
  • Spring MVC 执行流程:一个请求在 Spring MVC 中是如何执行的?
  • qt实现一个简单http服务器和客户端
  • 豪越科技消防一体化:数字中国智慧应急的关键支撑
  • Vue3自定义指令实现前端权限控制 - 按钮权限
  • 全球新闻系统发布 -- 项目启动环节
  • 固定翼无人机姿态和自稳模式
  • 区块链技术
  • [笔记] TinyWebServer编译及demo运行过程
  • React-Router路由跳转、传参、抽象封装以及嵌套路由
  • Redisson 分布式锁原理
  • webgl入门实例-06绘制多个大小不同点-深入理解buffer02
  • 【博客节选】再谈Unity 的 root motion
  • Mybatis注解的基础操作——02
  • WPF 样式(Style)和模板(Template)
  • 机器学习课堂4线性回归模型+特征缩放
  • 05STM32定时器-01定时器概述
  • 医学领域的deepseek:Med-R1,用强化学习开启医学视觉语言模型推理
  • Python与区块链隐私保护技术:如何在去中心化世界中保障数据安全
  • MySQL抖动浅析