2025年渗透测试面试题总结-66(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。
目录
一、信息搜集方法与工具
二、未解析DNS的网站入侵
三、常见中间件及漏洞
四、端口扫描关键目标
五、PHP弱类型漏洞
六、大型CMS审计案例
七、PHP特性相关漏洞
八、SQL注入写文件方法
九、特殊位置SQL注入
十、缓冲区溢出原理
十一、绕过ASLR+DEP防护
防御对抗演进
1、如何进行信息搜集,用过哪些工具 2、对没有挂到DNS上的网站如何进行入侵 3、有哪些常见的中间件,相关漏洞 4、端口扫描时,都关注哪些端口,分别代表什么 5、针对PHP的弱类型,有哪些漏洞 6、代码审计方面,有过对大型CMS的审计吗,发现过哪些漏洞 7、针对PHP的语言特点,说几个常见的漏洞 8、SQL注入,如何写入文件 9、SQL注入,如果注入点在union或order by之后,怎么办 10、陈述一下缓冲区溢出 11、如果对方开启了ASLR和DEP,要如何绕过
一、信息搜集方法与工具
- 被动搜集
- 工具:Whois查询(DomainTools)、SSL证书分析(Censys)、历史DNS记录(SecurityTrails)、威胁情报(Shodan, VirusTotal)
- 关键点:通过证书透明度日志发现子域名,利用Wayback Machine获取网站历史快照。
- 主动扫描
- 工具:Nmap(端口/服务扫描)、Masscan(高速扫描)、Sublist3r(子域名枚举)、Wappalyzer(技术栈识别)
- 技巧:结合ASN信息扫描目标IP段,使用DNS爆破工具(如dnsrecon)针对未解析域名。
二、未解析DNS的网站入侵
- IP发现
- 通过关联资产:历史解析记录、同一主机上的其他域名、SSL证书关联IP
- 工具:Censys搜索目标证书指纹,ZoomEye根据关键词定位IP
- 端口渗透
- 若网站运行在非常规端口(如8080),通过全端口扫描(Nmap -p-)识别Web服务
- 利用Host头部攻击:修改HTTP请求头访问未绑定域名的虚拟主机
三、常见中间件及漏洞
中间件 高危漏洞案例 利用场景 Apache CVE-2021-41773(路径遍历) 配置错误导致文件泄露 Nginx CVE-2013-2028(栈溢出) 低版本解析漏洞 Tomcat CVE-2017-12615(PUT文件上传) 写Webshell获取权限 IIS CVE-2015-1635(HTTP.SYS RCE) 远程代码执行 WebLogic CVE-2020-14882(未授权命令执行) 反序列化漏洞利用链
四、端口扫描关键目标
端口 服务 渗透意义 22 SSH 弱口令爆破/密钥泄露 80/443 HTTP/HTTPS Web漏洞入口点 445 SMB 永恒之蓝类漏洞(MS17-010) 3306 MySQL SQL注入/未授权访问 6379 Redis 未授权访问导致写SSH密钥 11211 Memcached UDP反射攻击载体 27017 MongoDB 配置不当导致数据泄露
五、PHP弱类型漏洞
比较漏洞
php
if ("0e123456" == 0) // true (哈希值比较绕过)
- 场景:密码哈希比较(如MD5('240610708') = 0e462097431906...)
哈希碰撞
- 利用不同字符串生成相同MD5(如"±"和"Á"),绕过身份验证
switch匹配绕过
php
switch("admin") { case 0: // 进入此分支(字符串转数字为0) }
in_array()缺陷
php
in_array("1admin", [0,1,2]) // true (字符串被强制转整型)
六、大型CMS审计案例
目标系统:WordPress 5.7 (CVE-2021-29447)
漏洞类型:XXE(XML外部实体注入)
触发点:媒体文件解析时未禁用外部实体
利用链:
- 上传包含恶意DTD的WAV文件
- 触发XML解析时读取服务器敏感文件(如/etc/passwd)
- 通过OOB外带数据(Out-of-Band)
其他案例:
- Joomla! 反序列化漏洞(CVE-2015-8562)
- Drupal SA-CORE-2018-002(远程代码执行)
七、PHP特性相关漏洞
- 文件包含漏洞
- 利用
include($_GET['file'])
加载恶意远程文件(需allow_url_include=On)- 伪协议利用:
php://filter/convert.base64-encode/resource=/etc/passwd
- 反序列化漏洞
- 触发
__destruct()
或__wakeup()
魔术方法执行危险操作- 经典案例:Typecho 1.1反序列化RCE
- 变量覆盖
extract($_POST)
导致用户可控变量覆盖关键参数parse_str()
函数未初始化变量
八、SQL注入写文件方法
适用数据库:MySQL(需secure_file_priv为空)
sql
UNION SELECT 1,"<?php system($_GET[cmd]);?>" INTO OUTFILE "/var/www/shell.php"
写入条件:
- 数据库用户需有FILE权限
- 目标目录可写且Web服务器可解析
- 路径需绝对路径(可通过
@@datadir
等查询获取)
九、特殊位置SQL注入
注入点在UNION/ORDER BY后:
- ORDER BY注入
- 布尔盲注:
?order=(case when (select substr(user(),1,1)='r') then id else name end)
- 时间盲注:
?order=if(1=1,sleep(0),sleep(5))
- UNION后注入
- 利用嵌套查询:
UNION SELECT * FROM (SELECT 1)a JOIN (SELECT 2)b
- 结合报错注入:
UNION SELECT extractvalue(1,concat(0x7e,(select user())))
十、缓冲区溢出原理c
void vuln(char *input) { char buffer[64]; strcpy(buffer, input); // 无长度检查导致溢出 }
攻击流程:
- 填充超长数据覆盖返回地址
- 将返回地址指向恶意Shellcode地址
- 覆盖栈中函数指针或SEH链(Windows)
关键结构:[填充字符][覆盖返回地址][NOP雪橇][Shellcode]
十一、绕过ASLR+DEP防护
信息泄露获取基址
- 利用格式化字符串漏洞泄露内存地址
- 通过未启用PIE的模块计算偏移(如glibc)
ROP链构造(Return-Oriented Programming)
pytho
# 示例:调用system("/bin/sh") rop_chain = [ pop_rdi_ret, # 弹出栈数据到RDI binsh_addr, # "/bin/sh"字符串地址 system_addr # 跳转到system函数 ]
JIT喷射攻击
- 在可执行内存区域(如JavaScript JIT区域)布置Shellcode
- 利用Heap Spray填充大量恶意指令地址
数据执行保护绕过
- 使用Return-to-libc技术调用系统函数
- 结合mprotect() 修改内存页为可执行属性
防御对抗演进
- ASLR绕过成功率:Linux系统熵值不足时可达80%(通过暴力破解地址)
- 现代防护:CFG(控制流防护)、SafeSEH、Shadow Stack等技术增加绕过难度
- 趋势:漏洞利用逐渐转向逻辑漏洞和供应链攻击,降低对内存漏洞的依赖