2025年渗透测试面试题总结-21(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。
目录
一、文件上传绕过方式(Top 5)
二、文件包含高危函数(PHP为例)
三、金融行业逻辑漏洞(关键3类)
四、MySQL提权方式(2种核心)
五、Java Web框架(主流5种)
六、PHP命令执行函数(高危7个)
七、Linux日志清除关键点
八、域环境Windows加固方案
九、AES/DES工作步骤对比
十、RSA算法流程
一百六十一、常见的上传绕过方式一百六十二、导致文件包含的函数一百六十三、金融行业常见逻辑漏洞一百六十四、mysql 两种提权方式一百六十五、常用 WEB 开发 JAVA 框架一百六十六、php 中命令执行涉及到的函数一百六十七、入侵 Linux 服务器后需要清除哪些日志?一百六十八、如何加固一个域环境下的 Windows 桌面工作环境?请给出你的思路。一百六十九、AES/DES 的具体工作步骤一百七十、RSA 算法
一、文件上传绕过方式(Top 5)
- 扩展名欺骗
- 双扩展名(
.php.jpg
)、空字节截断(shell.php%00.jpg
)、大小写变异(.PhP
)- 防御对策:白名单校验 + 内容类型检测(
magic number
)- 内容类型篡改
- 修改HTTP头
Content-Type: image/jpeg
(实际为恶意脚本)- 防御对策:服务端MIME检测 + 文件头校验
- 解析漏洞利用
- Apache解析漏洞(
test.php.xxx
解析为PHP)、IIS目录路径解析(/upload/shell.jpg/xxx.php
)- 防御对策:更新中间件 + 禁用非常规解析规则
- 文件内容注入
- 图片马(将脚本注入图片EXIF)、SVG的XXE攻击
- 防御对策:文件内容扫描 + 禁用危险标签(如SVG中的
<script>
)- 竞争条件攻击
- 在临时文件被删除前执行(常见于异步检测场景)
- 防御对策:同步处理 + 文件锁定机制
二、文件包含高危函数(PHP为例)
markdown
1. **基础包含函数** - `include()` / `include_once()`:包含失败仅警告 - `require()` / `require_once()`:包含失败致命错误 2. **封装器利用** - `php://input`(执行POST数据)、`data://`(Base64代码注入) - `zip://`(压缩包内文件包含) 3. **过滤绕过技巧** - 路径遍历:`....//` 归一化为 `../` - 空字节截断(PHP<5.3):`/etc/passwd%00`
三、金融行业逻辑漏洞(关键3类)
漏洞类型 典型案例 防御方案 支付逻辑缺陷 金额篡改(前端验证绕过) 服务端签名校验 + 金额锁 薅羊毛漏洞 无限优惠券(未校验唯一性) 分布式事务锁 + 库存原子性 账户安全缺陷 短信轰炸(无频率限制) 滑动窗口限流 + 行为分析
四、MySQL提权方式(2种核心)
- UDF提权(User-Defined Function)
mermaid
graph LR A[上传恶意so/dll] --> B[创建函数 sys_exec()] B --> C[调用函数执行系统命令]
- 条件:
secure_file_priv
为空 +FILE
权限- 启动项提权(Windows)
- 写入VBS脚本到启动目录:
sql
SELECT '恶意代码' INTO OUTFILE 'C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\shell.vbs'
- 重启后获得SYSTEM权限
五、Java Web框架(主流5种)
- Spring Boot
- 优势:自动配置 + Actuator监控
- 安全风险:未授权访问
/actuator/env
- Apache Struts2
- 历史漏洞:OGNL表达式注入(S2-045等)
- 防御:禁用动态方法调用(
struts.enable.DynamicMethodInvocation=false
)- Jakarta EE
- 核心组件:JSF + CDI + JPA
- 安全配置:
web.xml
中禁用目录遍历- Play Framework
- 异步架构 + RESTful原生支持
- 风险:CSRF保护需手动启用
- Micronaut
- 编译时依赖注入(零反射)
- 适用于Serverless安全场景
六、PHP命令执行函数(高危7个)
markdown
1. **直接执行类** `system()`, `exec()`, `passthru()`, `shell_exec()` 2. **代码注入类** `eval()`(非命令但同等危险)、`assert()` 3. **反引号执行** `` `ls -al` `` (等价于shell_exec) 4. **特殊场景利用** `popen()` / `proc_open()`(管道交互)
七、Linux日志清除关键点
markdown
1. **主要日志路径** - `/var/log/auth.log` (登录记录) - `/var/log/syslog`(系统事件) - `/var/log/apache2/access.log` (Web访问) 2. **清除技巧** - 清空文件:`echo "" > auth.log` - 删除自身记录:`sed -i '/192.168.1.100/d' access.log` - 内存日志清除:`echo > /dev/kmsg`(需root) 3. **高级隐匿** - 禁用systemd-journald:`systemctl stop systemd-journald` - 删除二进制日志:`journalctl --vacuum-size=0`
八、域环境Windows加固方案
mermaid
graph TB A[账户安全] --> A1[启用LAPS(本地管理员密码轮转)] A --> A2[限制域管理员登录工作站] B[组策略] --> B1[软件限制策略(白名单)] B --> B2[禁用NTLMv1 + 强制SMB签名] C[系统防护] --> C1[启用BitLocker磁盘加密] C --> C2[配置Defender ASR规则] D[网络隔离] --> D1[防火墙阻断135-139/445端口] D --> D2[工作站间禁止SMB通信]
九、AES/DES工作步骤对比
步骤 AES(AES-256为例) DES(已淘汰) 1. 分块 128-bit数据块 64-bit数据块 2. 密钥扩展 256-bit密钥→15轮子密钥(Key Schedule) 56-bit密钥→16轮48-bit子密钥 3. 初始轮 AddRoundKey(密钥加) 初始置换(IP) 4. 核心轮 重复10-14轮:
- SubBytes(S盒)
- ShiftRows(行移位)
- MixColumns(列混淆)
- AddRoundKey重复16轮:
- 扩展置换(32→48bit)
- S盒替换(48→32bit)
- P盒置换5. 最终轮 省略MixColumns 逆初始置换(IP⁻¹)
十、RSA算法流程
markdown
1. **密钥生成** - 选大素数 `p=61`, `q=53` - 计算模数 `n=p*q=3233` - 计算欧拉函数 `φ(n)=(p-1)(q-1)=3120` - 选公钥 `e=17`(需满足 `1<e<φ(n)` 且互质) - 计算私钥 `d`:`d ≡ e⁻¹ mod φ(n)` → `d=2753` 2. **加密过程** 明文 `M=65` → 密文 `C ≡ Mᵉ mod n = 65¹⁷ mod 3233 = 2790` 3. **解密过程** 密文 `C=2790` → 明文 `M ≡ Cᵈ mod n = 2790²⁷⁵³ mod 3233 = 65` 4. **2025安全实践** - 密钥长度 ≥ 3072-bit - 必须使用OAEP填充模式 - 弃用PKCS#1 v1.5