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

安恒春招一面

《网安面试指南》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";  

相关文章:

  • Delta Lake 解析:架构、数据处理流程与最佳实践
  • 【C++】类和对象(匿名对象)
  • Python爬虫-爬取AliExpress商品搜索词排名数据
  • Python FastAPI面试题及参考答案
  • 基于springboot的新闻推荐系统(045)
  • Mybatis_plus
  • 数据库三级填空+应用题(1)
  • 【Node.js入门笔记10---http 模块】
  • 【SpringCloud】微服务的治理以及服务间的远程调用
  • 基于python+django的图书借阅网站-图书借阅管理系统源码+运行步骤
  • 【2025】基于springboot+vue的农产品商城系统设计与实现(源码、万字文档、图文修改、调试答疑)
  • NO.9|C++内存|堆和栈|内存管理|malloc和局部变量|程序section启动过程|全局变量|内存泄漏|atomoic|内存模型|内存对齐
  • SSH配置过程及无法正常链接问题的解决【小白教学】
  • JVM类文件结构详解
  • 【计算机网络运输层详解】
  • OpenCV-Contrib常用扩展模块
  • Python模块化设计——递归
  • git push 提示 fatal: the remote end hung up unexpectedly
  • Linux系统管理与编程10:任务驱动综合应用zabbix-agent2
  • STM32滴答定时器(SysTick)原理及延时函数实现
  • 国家出口管制工作协调机制办公室部署开展打击战略矿产走私出口专项行动
  • 欧盟公布关税反制清单,瞄准美国飞机、汽车等产品
  • 人民日报评“组团退演出服”:市场经济诚信原则需全社会维护
  • 美英达成贸易协议,美股集体收涨
  • 绍兴柯桥:用一块布托起中国制造的新经纬
  • 媒体起底“速成洋文凭”灰产链,专家:我们要给学历“祛魅”