网络安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。
目录
22. HashMap、HashTable、ConcurrentHashMap的区别?
26. synchronized与wait/notify机制
2025年渗透测试面试题总结-拷打题库17
如何通过程序判断一批域名是否是泛解析域名? 单机上进行域名爆破存在什么缺陷 GitHub中可根据企业哪些特征进行搜索? 如何找到某个人的联系方式? 各种常见木马的的优劣势? 木马免杀有哪些方式?哪种方式最有效? 木马隧道有哪些?哪种隧道在当前最有效? WordDDE和Office宏有什么优劣势? 如何绕过Office受保护视图? 有哪些有效的钓鱼方式? 如何绕过WAF、HIDS、威胁感知,选其一回答? BadUSB原理及局限? 如何在禁止出网的机器上访问互联网? ew、frp差异? ICMP如何出网? 如何进行水坑攻击? 如何利用XSS让影响最大化? 如何全流程最大限度降低被红军发现概率? equals与==的区别 Java虚拟机区域如何划分? 方法重载与方法重写的区别? HashMap和HashTable、ConcurrentHashMap的区别? 进程和线程区别,进程间、线程间通信有哪几种方式? JavaBIO/NIO/AIO是什么?适用哪些场景? 挑一个设计模式(工厂、单例、适配器、观察者)进行讲解 synchorized如何使用?Object的wait、notify方法有什么作用? sleep()和wait()有什么区别? 什么是幂等性?一般有什么方式实现? 大文件小内存的排序如何做? 有1亿个数字,其中有两个是重复的,如何快速找到?要求时间和空间最优。
1. 如何通过程序判断一批域名是否是泛解析域名?
核心思路:泛解析域名会将所有未明确配置的子域名解析到同一IP地址。可通过以下步骤验证:
- 随机子域名探测:生成多个随机字符串作为子域名(如
random123.example.com
),向DNS服务器发起查询。- IP一致性分析:若多个随机子域名均解析到同一IP,则可能是泛解析。
- 对比已知无效子域名:尝试查询不存在的子域名(如
nonexistent.example.com
),若返回有效IP,则进一步确认泛解析。- 排除干扰:结合WHOIS信息、CDN特征(如IP段归属)排除误判。
扩展:某些CDN服务(如Cloudflare)可能导致类似泛解析的行为,需结合其他特征(如HTTP响应头)综合分析。
2. 单机上进行域名爆破存在什么缺陷?
缺陷分析:
- 效率低下:单机带宽和计算资源有限,无法快速遍历海量子域名。
- 易触发防御机制:高频DNS请求易被防火墙标记为恶意行为,导致IP被封禁。
- 数据存储限制:大规模爆破结果需存储和分析,单机可能无法处理。
- 隐蔽性差:流量特征集中,易被流量监控设备捕获。
改进方案:采用分布式爆破,结合代理池轮询和请求速率控制。
3. GitHub中可根据企业哪些特征进行搜索?
关键搜索特征:
- 域名邮箱后缀:
user:@example.com
。- 组织账号:
org:companyname
。- 代码关键词:
filename:config
+password
。- 提交记录:
author:john.doe
。- 敏感路径:
path:/.env
或path:/secrets
。扩展:使用
in:file
、language:json
等过滤条件缩小范围,结合GitHub API自动化采集。
4. 如何找到某个人的联系方式?
OSINT(开源情报)方法:
- 社交媒体:LinkedIn、Twitter个人资料页。
- 企业官网:团队成员页面或新闻稿。
- WHOIS查询:域名注册信息中的联系方式。
- 专业社区:GitHub、Stack Overflow个人简介。
- 数据泄露库:通过
Have I Been Pwned
等平台搜索邮箱。注意事项:需遵守隐私法规(如GDPR),避免非法爬取。
5. 各种常见木马的优劣势?
木马类型 优势 劣势 远控木马 实时交互,功能全面 流量特征明显,易被检测 下载者 体积小,隐蔽性强 依赖外部服务器存活 Rootkit 深度隐藏,持久化 开发难度高,兼容性差 无文件 不落盘,绕过传统查杀 依赖内存漏洞,不稳定
6. 木马免杀有哪些方式?哪种方式最有效?
免杀技术:
- 代码混淆:加密字符串、拆分函数逻辑。
- 内存加载:通过合法进程(如PowerShell)反射注入。
- 白加黑:劫持合法签名程序的DLL。
- 反沙箱:检测虚拟机环境后终止执行。
最有效方式:内存加载(如Cobalt Strike的Beacon),因其不依赖文件落地,且可动态加密通信。
7. 木马隧道有哪些?哪种隧道在当前最有效?
隧道类型:
- HTTP/HTTPS:伪装成Web流量,但特征易被深度包检测(DPI)发现。
- DNS:利用DNS查询传递数据,隐蔽但带宽低。
- ICMP:通过Ping请求传递数据,绕过部分防火墙规则。
- WebSocket:基于浏览器协议,适合穿透代理。
当前最有效:ICMP隧道(如PingTunnel),因其通常被视为无害协议,且企业内网较少限制。
8. WordDDE和Office宏有什么优劣势?
特性 WordDDE Office宏 触发方式 利用DDE协议自动执行 需用户启用宏 兼容性 仅支持旧版Office 支持新版Office(需配置) 检测难度 较少被杀软关注 宏病毒特征库较完善 利用场景 钓鱼文档、社工攻击 自动化任务、恶意代码加载
9. 如何绕过Office受保护视图?
绕过方法:
- 用户诱导:提示文档来自可信来源,引导点击“启用编辑”。
- 文件类型混淆:将恶意文档伪装成PDF或其他格式。
- 信任位置利用:诱导用户将文档保存到受信任目录(如
%APPDATA%
)。- 漏洞利用:结合CVE-2017-0199等漏洞自动绕过。
10. 有哪些有效的钓鱼方式?
钓鱼类型:
- 邮件钓鱼:伪造发件人(如公司高管),诱导点击链接。
- 网站克隆:仿冒登录页面(如Google、银行网站)。
- 二维码钓鱼:将恶意链接嵌入二维码,绕过URL检测。
- 供应链攻击:污染第三方软件更新渠道。
扩展:结合社会工程学(如紧急事件通知)提高成功率。
11. 如何绕过WAF?
绕过技术(以WAF为例):
- 编码混淆:使用URL编码、Unicode字符绕过关键字检测。
- 分块传输:通过Transfer-Encoding: chunked拆分恶意负载。
- 参数污染:传递多个同名参数混淆解析逻辑(如
?id=1&id=SELECT 1
)。- 注释填充:插入SQL注释符(
/*random*/
)干扰正则匹配。
12. BadUSB原理及局限?
原理:模拟HID设备(如键盘),预录按键指令执行恶意操作(如下载木马)。 局限:
- 依赖物理接触:需插入目标设备。
- 防御措施:部分系统禁用自动运行或启用设备白名单。
- 功能单一:无法绕过双因素认证(2FA)。
13. 如何在禁止出网的机器上访问互联网?
穿透方法:
- DNS隧道:通过DNS查询传递HTTP请求(如dnscat2)。
- ICMP隧道:利用Ping包封装TCP流量。
- 代理链:通过内网其他可达外网的主机跳转。
- 合法协议复用:伪装成合法服务流量(如HTTPS over 443端口)。
14. ew和frp差异?
特性 ew frp 协议支持 支持SOCKS5、多级代理 支持TCP/UDP、HTTP/HTTPS 配置难度 需手动编写配置文件 图形化界面,配置简单 性能 轻量级,适合低带宽环境 高并发支持,适合大规模场景 使用场景 内网穿透、隐蔽渗透 公开服务映射、反向代理
15. ICMP如何出网?
技术实现:
- 数据封装:将TCP/UDP负载封装在ICMP Echo请求的Data字段。
- 工具支持:使用PingTunnel或icmpsh建立双向通信。
- 防火墙绕过:部分网络允许ICMP协议通过,但限制TCP/UDP。
16. 如何进行水坑攻击?
步骤:
- 目标分析:识别目标群体常访问的网站(如行业论坛)。
- 漏洞利用:入侵目标网站,植入恶意JS或重定向代码。
- 载荷投递:触发浏览器漏洞(如CVE-2021-44228)或下载木马。
- 隐蔽持久化:使用Domain Shadowing技术隐藏C2服务器。
17. 如何利用XSS让影响最大化?
攻击场景:
- Cookie窃取:通过
document.cookie
获取会话凭证。- 钓鱼伪造:动态插入虚假登录表单。
- 结合CSRF:触发用户非自愿操作(如转账)。
- 持久化存储:利用HTML5 LocalStorage存储恶意代码。
18. 如何全流程降低被发现的概率?
隐蔽措施:
- 通信加密:使用TLS+自定义证书加密C2流量。
- 流量伪装:模仿合法协议(如HTTPS、Cloud API)。
- 权限控制:仅请求必要权限(如最小化提权)。
- 日志清理:删除系统日志、覆盖磁盘痕迹。
19. equals与==的区别?
- ==:比较对象内存地址是否相同(引用比较)。
- equals:比较对象内容是否相等(需重写方法,如String类)。 示例:
java
String a = new String("test"); String b = new String("test"); a == b; // false(不同对象) a.equals(b); // true(内容相同)
20. Java虚拟机区域如何划分?
内存结构:
- 堆(Heap):存放对象实例,分为新生代(Eden、Survivor)、老年代。
- 方法区(Metaspace):存储类信息、常量池(JDK8后元空间替代永久代)。
- 虚拟机栈:线程私有,存放方法调用栈帧。
- 本地方法栈:Native方法调用。
- 程序计数器:记录当前线程执行位置。
21. 方法重载与方法重写的区别?
维度 重载(Overload) 重写(Override) 作用范围 同一类中 子类继承父类 参数列表 必须不同 必须相同 返回类型 可不同 需兼容(子类可返回更具体类型) 访问权限 无限制 子类方法不能更严格
22. HashMap、HashTable、ConcurrentHashMap的区别?
特性 HashMap HashTable ConcurrentHashMap 线程安全 否 是(全表锁) 是(分段锁/Node锁) Null键值 允许 不允许 不允许 性能 高(非线程安全) 低(同步开销) 中等(锁粒度细)
23. 进程和线程区别,通信方式?
区别:
- 资源占用:进程独立内存空间,线程共享进程资源。
- 切换开销:线程切换成本低于进程。
通信方式:
- 进程间:管道、消息队列、共享内存、Socket。
- 线程间:共享变量、锁、信号量(synchronized、Lock)。
24. Java BIO/NIO/AIO是什么?适用场景?
- BIO:同步阻塞IO,适合连接数少且固定的场景(如传统HTTP服务器)。
- NIO:同步非阻塞IO,通过Selector多路复用,适合高并发(如聊天服务器)。
- AIO:异步IO(基于回调),适合长连接、高吞吐(如文件服务器)。
25. 单例模式详解(以DCL双检锁为例):
java
public class Singleton { private volatile static Singleton instance; private Singleton() {} public static Singleton getInstance() { if (instance == null) { synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); } } } return instance; } }
优点:延迟初始化,线程安全,高性能。 缺点:需处理序列化破坏单例的问题(实现
readResolve()
)。
26. synchronized与wait/notify机制
- synchronized:修饰方法或代码块,基于对象监视器锁(Monitor)实现同步。
- wait():释放锁并进入等待状态,需通过notify()/notifyAll()唤醒。
- notify():随机唤醒一个等待线程,不释放锁。
示例:生产者-消费者模型中的线程协作。
27. sleep()和wait()区别?
- 锁释放:sleep()不释放锁,wait()释放锁。
- 唤醒方式:sleep()超时自动唤醒,wait()需外部通知。
- 所属类:sleep()是Thread方法,wait()是Object方法。
28. 幂等性实现方式
- Token机制:提交前申请唯一Token,服务端校验后销毁。
- 唯一索引:数据库层面防止重复插入。
- 状态机:限制业务状态流转方向(如订单状态不可逆)。
29. 大文件小内存排序方案
外部排序(External Sort):
- 分块读取:将大文件拆分为多个可内存加载的小块。
- 内部排序:对每个块使用快速排序。
- 归并合并:通过多路归并算法合并排序后的块。
30. 一亿数字找重复的最优解
最优方案:
- 位图法(BitMap):若数字范围有限(如≤1e8),用bit数组标记出现次数。
- 分治哈希:将数字哈希到多个文件,在每个文件中使用HashSet检测重复。
复杂度:位图法时间O(n),空间O(max_num);分治法时间O(n),空间O(n/k)(k为分片数)。