安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。
目录
[482. 单机上进行域名爆破存在什么缺陷?](#482. 单机上进行域名爆破存在什么缺陷?)
[483. GitHub中可根据企业哪些特征进行搜索?](#483. GitHub中可根据企业哪些特征进行搜索?)
[484. 如何找到某个人的联系方式?](#484. 如何找到某个人的联系方式?)
[485. 各种常见木马的优劣势?](#485. 各种常见木马的优劣势?)
[486. 木马免杀有哪些方式?哪种方式最有效?](#486. 木马免杀有哪些方式?哪种方式最有效?)
[487. 木马隧道有哪些?哪种隧道在当前最有效?](#487. 木马隧道有哪些?哪种隧道在当前最有效?)
[488. WordDDE和Office宏有什么优劣势?](#488. WordDDE和Office宏有什么优劣势?)
[489. 如何绕过Office受保护视图?](#489. 如何绕过Office受保护视图?)
[490. 有哪些有效的钓鱼方式?](#490. 有哪些有效的钓鱼方式?)
[491. 如何绕过WAF(Web应用防火墙)?](#491. 如何绕过WAF(Web应用防火墙)?)
[492. BadUSB原理及局限?](#492. BadUSB原理及局限?)
[493. 如何在禁止出网的机器上访问互联网?](#493. 如何在禁止出网的机器上访问互联网?)
[494. ew、frp差异?](#494. ew、frp差异?)
[495. ICMP如何出网?](#495. ICMP如何出网?)
[496. 如何进行水坑攻击?](#496. 如何进行水坑攻击?)
[497. 如何利用XSS让影响最大化?](#497. 如何利用XSS让影响最大化?)
[498. 如何全流程最大限度降低被红军发现概率?](#498. 如何全流程最大限度降低被红军发现概率?)
[二、 Java基础(499-508)](#二、 Java基础(499-508))
[499. equals与==的区别](#499. equals与==的区别)
[500. Java虚拟机区域如何划分?](#500. Java虚拟机区域如何划分?)
[501. 方法重载与方法重写的区别?](#501. 方法重载与方法重写的区别?)
[502. HashMap、HashTable、ConcurrentHashMap的区别?](#502. HashMap、HashTable、ConcurrentHashMap的区别?)
[503. 进程和线程区别,进程间、线程间通信方式?](#503. 进程和线程区别,进程间、线程间通信方式?)
[504. Java BIO/NIO/AIO是什么?适用哪些场景?](#504. Java BIO/NIO/AIO是什么?适用哪些场景?)
[505. 单例模式讲解](#505. 单例模式讲解)
[506. synchorized如何使用?Object的wait/notify作用?](#506. synchorized如何使用?Object的wait/notify作用?)
[507. sleep()和wait()有什么区别?](#507. sleep()和wait()有什么区别?)
[508. 什么是幂等性?实现方式?](#508. 什么是幂等性?实现方式?)
[509. 大文件小内存的排序如何做?](#509. 大文件小内存的排序如何做?)
[510. 有1亿个数字,其中有两个重复,如何快速找到?要求时间和空间最优。](#510. 有1亿个数字,其中有两个重复,如何快速找到?要求时间和空间最优。)
482 单机上进行域名爆破存在什么缺陷 483 GitHub中可根据企业哪些特征进行搜索? 484 如何找到某个人的联系方式? 485 各种常见木马的的优劣势? 486 木马免杀有哪些方式?哪种方式最有效? 487 木马隧道有哪些?哪种隧道在当前最有效? 488 WordDDE和Office宏有什么优劣势? 489 如何绕过Office受保护视图? 490 有哪些有效的钓鱼方式? 491 如何绕过WAF、HIDS、威胁感知,选其一回答? 492 BadUSB原理及局限? 493 如何在禁止出网的机器上访问互联网? 494 ew、frp差异? 495 ICMP如何出网? 496 如何进行水坑攻击? 497 如何利用XSS让影响最大化? 498 如何全流程最大限度降低被红军发现概率? 499 equals与==的区别 500 Java虚拟机区域如何划分? 501 方法重载与方法重写的区别? 502 HashMap和HashTable、ConcurrentHashMap的区别? 503 进程和线程区别,进程间、线程间通信有哪几种方式? 504 JavaBIO/NIO/AIO是什么?适用哪些场景? 505 挑一个设计模式(工厂、单例、适配器、观察者)进行讲解 506 synchorized如何使用?Object的wait、notify方法有什么作用? 507 sleep()和wait()有什么区别? 508 什么是幂等性?一般有什么方式实现? 509 大文件小内存的排序如何做? 510 有1亿个数字,其中有两个是重复的,如何快速找到?要求时间和空间最优。
一、渗透测试/网络安全(482-498)
482. 单机上进行域名爆破存在什么缺陷?
- 性能瓶颈:单机带宽和CPU有限,难以支撑大规模字典攻击,易被目标防火墙拦截。
- 隐蔽性差:高频请求触发安全设备(如WAF)告警,暴露攻击者IP。
- 效率低下 :缺乏分布式协同,无法快速覆盖子域名变体(如
a.example.com,b.example.com)。
改进方向:使用分布式工具(如Ffuf集群)或云服务分散请求。483. GitHub中可根据企业哪些特征进行搜索?
可搜索特征包括:
- 组织名称 :
org:google- 代码内容 :
filename:config password in:path- 员工信息 :
user:email@company.com- 项目标签 :
topic:api-key- 提交历史 :
author:name commit_date:>2024
技巧 :结合in:file、language:python等过滤条件缩小范围。484. 如何找到某个人的联系方式?
分四步进行:
- 开源情报(OSINT):爬取LinkedIn/社交媒体(工具:Maltego)。
- 企业关联:通过公司官网或WHOIS查询域名注册邮箱。
- 数据泄露库:检索HaveIBeenPwned或Dehashed。
- 钓鱼验证 :伪造问卷诱导目标主动提交(需合规授权)。
注意:隐私法律限制(如GDPR),仅限授权测试。485. 各种常见木马的优劣势?
木马类型 优势 劣势 RAT(远程访问) 功能全(摄像头/文件控制) 体积大,易被杀软检测 Downloader 体积小(<100KB) 依赖网络下载载荷,出网受限 无文件木马 无磁盘写入,隐蔽性强 依赖内存驻留,重启失效 486. 木马免杀有哪些方式?哪种方式最有效?
- 方式 :
- 代码混淆:加密字符串(AES)、指令重排。
- 加壳:UPX压缩或VMProtect虚拟化。
- 内存加载:PE文件注入合法进程(如explorer.exe)。
- 签名劫持:伪造微软签名或劫持白名单程序。
- 最有效 :内存加载(如Cobalt Strike的反射DLL注入),不落盘、行为模拟合法进程,绕过静态+动态分析。
487. 木马隧道有哪些?哪种隧道在当前最有效?
- 常见隧道 :
- HTTP/HTTPS:伪装Web流量(工具:Metasploit)。
- DNS:通过DNS查询传递数据(工具:DNScat2)。
- ICMP:利用Ping包(隐蔽但带宽低)。
- 当前最有效 :HTTPS隧道(如Cloudflare反向代理),流量加密且与正常Web服务混合,难以被流量分析设备识别。
488. WordDDE和Office宏有什么优劣势?
特性 WordDDE(动态数据交换) Office宏 优势 无文件执行,老系统兼容性强 支持复杂逻辑(如API调用) 劣势 新版Office默认禁用,用户需确认 需启用宏,易被沙箱检测 适用场景 钓鱼邮件附件(针对旧版Office) 诱导用户启用宏的文档 489. 如何绕过Office受保护视图?
- 信任域绕过:将恶意文档放在网络共享路径,标记为"受信任位置"。
- 利用漏洞:CVE-2017-0199(RTF漏洞)强制退出保护模式。
- 社会工程 :文档提示"内容被锁定,点击启用编辑"。
最佳实践:结合漏洞利用(如OLE对象注入)提高成功率。490. 有哪些有效的钓鱼方式?
- 鱼叉钓鱼:定制化邮件(仿冒HR通知),打开率>30%。
- 水坑攻击:劫持目标常访网站(见问题496)。
- 二维码钓鱼:诱导扫描恶意二维码下载APP。
- 语音钓鱼(Vishing) :AI模拟高管声音要求转账。
关键:心理操纵(如制造紧迫感:"账户即将冻结")。491. 如何绕过WAF(Web应用防火墙)?
- 混淆技术 :
- 编码绕过 :Unicode/Base64编码SQL注入语句(如
SELECT→\u0053\u0045\u004C\u0045\u0043\u0054)。- 分块传输:HTTP协议分块发送恶意载荷(绕过正则匹配)。
- IP轮替:代理池切换源IP避开速率限制。
- 高级手法:利用WAF规则盲区(如JSON格式SQLi)。
492. BadUSB原理及局限?
- 原理:伪装为HID设备(键盘),注入预编程按键指令(如打开终端执行命令)。
- 局限 :
- 需物理接触设备。
- 依赖目标禁用USB安全策略。
- 无法绕过现代EDR的行为监控。
493. 如何在禁止出网的机器上访问互联网?
- 方式 :
- ICMP隧道:封装数据到Ping包(工具:icmpsh)。
- DNS隧道:通过DNS解析请求传数据(见问题495)。
- 物理中转 :USB设备交换数据(如隔空投递+离线解码)。
首选:DNS隧道(企业极少封锁DNS端口)。494. ew、frp差异?
特性 ew(EarthWorm) frp 定位 内网穿透(轻量级) 反向代理(高可配置) 协议 支持SOCKS5/多级跳板 支持HTTP/TCP/UDP 场景 红队渗透(隐蔽性强) 合法业务暴露(如远程桌面) 495. ICMP如何出网?
通过封装TCP/UDP数据到ICMP Echo请求包:
- 工具(如ptunnel)在客户端封装Payload。
- 服务端解包并转发至目标服务器。
- 限制:带宽低(<1Mbps),仅适合命令控制(C2)小数据量场景。
496. 如何进行水坑攻击?
分三步:
- 目标分析:识别目标群体常访网站(如行业论坛)。
- 漏洞利用:攻陷该站注入恶意JS(如浏览器0day)。
- 载荷投递 :下载木马或窃取会话Cookie。
关键:选择高信任度网站降低怀疑。497. 如何利用XSS让影响最大化?
- 横向扩散 :
- 窃取Cookie接管账号。
- 注入恶意JS到用户生成内容(如评论)。
- 纵向提权 :
- 劫持管理员会话。
- 结合CSRF修改系统配置。
案例:Self-XSS诱导用户复制恶意代码到控制台。498. 如何全流程最大限度降低被红军发现概率?
- 侦查阶段 :
- 使用匿名基础设施(Tor+云虚拟机)。
- 攻击阶段 :
- 无文件攻击 + 合法工具滥用(Living-off-the-Land)。
- 持久化 :
- 隐藏计划任务/注册表键(命名仿系统服务)。
核心:减少攻击频率,模拟正常用户行为(如工作时间访问)。
二、 Java基础(499-508)
499. equals与==的区别
==:比较对象内存地址(是否同一实例)。equals():比较对象内容(可重写,如String比对字符序列)。
Java
String s1 = new String("text"); String s2 = new String("text"); s1 == s2; // false(地址不同) s1.equals(s2); // true(内容相同)500. Java虚拟机区域如何划分?
JVM内存分为:
- 堆(Heap):对象实例(GC主区域)。
- 栈(Stack):方法局部变量、操作数栈。
- 方法区(Method Area):类元数据、常量池(JDK8后为Metaspace)。
- PC寄存器:线程执行位置。
- 本地方法栈:Native方法调用。
501. 方法重载与方法重写的区别?
维度 重载(Overload) 重写(Override) 作用域 同一类中 子类继承父类 签名 方法名相同,参数列表不同 方法名、参数、返回类型均相同 多态 编译时多态 运行时多态 502. HashMap、HashTable、ConcurrentHashMap的区别?
特性 HashMap HashTable ConcurrentHashMap 线程安全 不安全 安全(synchronized) 安全(分段锁/CAS) Null键 允许 禁止 禁止 性能 高(非并发) 低 高(并发优化) 503. 进程和线程区别,进程间、线程间通信方式?
- 区别 :
- 进程:独立资源单元(内存、文件),切换开销大。
- 线程:进程内执行单元,共享资源,切换开销小。
- 通信方式 :
- 进程间:管道、消息队列、共享内存、Socket。
- 线程间:锁(synchronized)、信号量、volatile变量。
504. Java BIO/NIO/AIO是什么?适用哪些场景?
模型 机制 场景 BIO 同步阻塞(1请求1线程) 低并发连接(如老旧系统) NIO 同步非阻塞(多路复用) 高并发(如聊天服务器) AIO 异步非阻塞(回调通知) 文件I/O等延迟敏感操作 505. 单例模式讲解
核心:确保类仅有一个实例,全局可访问。
Java
public class Singleton { private static volatile Singleton instance; // volatile防指令重排 private Singleton() {} // 私有构造 public static Singleton getInstance() { if (instance == null) { synchronized (Singleton.class) { if (instance == null) { instance = new Singleton(); // 双重检查锁 } } } return instance; } }场景:配置管理、数据库连接池。
506. synchorized如何使用?Object的wait/notify作用?
synchronized :修饰方法或代码块,实现互斥锁。
Java
public synchronized void syncMethod() { ... }wait():释放锁并阻塞线程,等待其他线程notify。
notify() :唤醒同一对象上wait的一个线程。
典型应用:生产者-消费者模型(协调线程协作)。507. sleep()和wait()有什么区别?
维度 sleep() wait() 归属 Thread类静态方法 Object类方法 锁释放 不会释放锁 释放锁 唤醒 时间到自动唤醒 需notify()/notifyAll()唤醒 508. 什么是幂等性?实现方式?
- 定义:多次执行同一操作,结果一致(如支付重复提交仅扣款一次)。
- 实现方式 :
- Token机制:请求带唯一Token,服务端校验后失效。
- 版本号:数据更新附带版本号(如CAS)。
- 唯一约束:数据库唯一索引防重复插入。
三、算法/系统设计(509-510)
509. 大文件小内存的排序如何做?
采用外部排序(归并排序变种):
- 分块:将大文件拆分为内存可容纳的小块(如100MB)。
- 内部排序:对每个块在内存中快速排序后写回磁盘。
- 多路归并 :将有序块合并(堆排序优化合并过程)。
优化:使用败者树减少归并比较次数。510. 有1亿个数字,其中有两个重复,如何快速找到?要求时间和空间最优。
问题关键:数字范围未知,但仅两个重复。
最优解法 :位图法(Bitmap)
- 初始化一个大小足够的位数组(如10^8位≈12.5MB)。
- 遍历数字,若位图对应位已置1,则该数字重复。
- 时间复杂度 :O(n),空间复杂度:O(n/8)(n为最大值)。
代码示意 :
Java
BitSet bitSet = new BitSet(); for (int num : nums) { if (bitSet.get(num)) return num; // 找到重复 bitSet.set(num); }特殊场景 :若数字范围极大,改用哈希表(空间O(n),时间O(1)查询)。