第3章 渗透测试基础技术高频面试题:协议、操作系统、数据库、基础漏洞原理
本章聚焦渗透测试面试中的三大技术基石:网络协议、操作系统与数据库,以及它们衍生的基础漏洞原理。你必须能清晰阐述TCP三次握手、SQL注入、文件上传等高频考点的底层机制、攻击手法与防御方案。下面先通过一张回答框架图理清“基础漏洞问题”的标准拆解路径,再进入核心问答卡片。
📋 渗透测试基础技术考点速查表
| 技术领域 | 核心考点 | 考察要点 | 常见漏洞关联 |
|---|---|---|---|
| 网络协议 | TCP/IP、HTTP、DNS | 三次握手/四次挥手、状态码、DNS解析、Cookie/Session | SYN Flood、HTTP走私、DNS Tunnel |
| 操作系统 | Windows/Linux安全、权限模型 | 用户/组、SUID/SGID、注册表、安全基线 | 提权漏洞(脏牛、永恒之蓝)、文件包含 |
| 数据库 | MySQL、MSSQL、Oracle | 存储过程、函数、注入语法、字符集 | SQL注入(报错/联合/盲注)、提权(xp_cmdshell) |
| 基础漏洞原理 | 文件上传/包含、命令执行、XSS | 绕过逻辑、WAF绕过、payload构造 | 一句话木马、命令注入、反射型/存储型XSS |
🎯 面试问题 1:请描述 TCP 三次握手过程,并说明 SYN Flood 攻击的原理及防御方法。
🧐 面试官考察点:
- 对网络协议底层细节的掌握程度
- 能否结合漏洞理解协议缺陷
- 防御思维是否具体可行
📐 回答框架:
- 简述三次握手:SYN→SYN+ACK→ACK,状态变迁
- 指出ACK未收到时服务器维护半连接队列
- 描述攻击者伪造源IP发送大量SYN,填满队列
- 防御:SYN Cookie、增大backlog、缩短超时
✏️ 示例回答: 客户端发送SYN,服务器回复SYN+ACK并进入SYN_RCVD;客户端回复ACK完成握手。SYN Flood攻击伪造大量SYN不回复ACK,服务器半连接队列耗尽。防御可用SYN Cookie无状态分配序列号,或增大tcp_max_syn_backlog,同时缩短SYN超时。
🔍 可能追问: SYN Cookie 如何工作?如果攻击者能预测序列号怎么办?
⚠️ 避坑提醒: 不要只背步骤;强调攻击本质是资源耗尽,以及防御要分层(网络层+主机层)。避免说“限制SYN速率”这种片面措施。
🎯 面试问题 2:请解释 SQL 注入的原理,并给出一个基于报错的注入 payload 示例及完整的防御方案。
🧐 面试官考察点:
- 是否理解注入成因是拼接而非参数化
- 能否灵活构造不同场景 payload
- 防御方案的工程化程度
📐 回答框架:
- 成因:用户输入未过滤直接拼接SQL
- 攻击类型:报错/联合/盲注/时间盲注
- 报错payload示例:
' AND EXTRACTVALUE(1,CONCAT(0x7e,(SELECT user())))--+ - 工程防御:预编译/参数化查询 + WAF + 最小权限
✏️ 示例回答: 报错注入以' AND EXTRACTVALUE(1,CONCAT(0x7e,(SELECT user())))--+为例,利用MySQL报错函数输出数据。防御核心是使用预编译语句(如MyBatis #{})彻底分离数据和SQL逻辑,并限制数据库账户仅具备必要操作权限。
🔍 可能追问: 预编译在ORM框架中的实现原理?盲注如何逐字符猜解?
⚠️ 避坑提醒: 不要只说“过滤特殊字符”,面试官会追问绕过方式。一定要突出“参数化”才是根治方案。另外避免展示过于复杂的长payload,重点在逻辑。
🎯 面试问题 3:文件上传漏洞的常见绕过方式有哪些?请举例说明如何通过白名单扩展名 + 内容检测进行防御。
🧐 面试官考察点:
- 对上传过滤机制的深入理解
- 绕过手法的实际经验
- 能否设计多层防御体系
📐 回答框架:
- 漏洞成因:未校验文件类型/可执行权限
- 常见绕过:双扩展名、%00截断、Content-Type篡改、图片马
- 防御:白名单扩展名+MIME检测+文件内容魔数校验+重命名存储
✏️ 示例回答: 攻击者上传shell.php.jpg利用Apache解析漏洞,或修改Content-Type为image/jpeg。防御应设白名单(只允许jpg、png等),同时检查文件前几个字节魔数(如89 50 4E 47),保存时使用随机UUID重命名并放在非执行目录。
🔍 可能追问: Apache解析漏洞的版本差异?如何在图片马中隐藏
⚠️ 避坑提醒: 避免只提“限制上传目录执行权限”这种单一回答。重点展示组合拳:白名单+内容检测+重命名+权限控制,同时提到OSS或CDN分离存储更安全。