在运营家用服务器时,最重要的就是安全。
就算把网站功能搭建得再满意,被从四面八方涌来的黑客攻击一次之后,一切都成了摆设。
上次因为被黑连着被“洗劫”了 3 天,真的挺吓人的。
于是决定系统地学习一下黑客相关的内容。
在 YouTube 上看到有人说一本叫做 해킹 맛보기 的书堪称“黑客圣经”,就买了……
结果我没注意到这本书的出版时间是 2015 年。

书终究还是寄到了,翻开一看,里面全是 IE、老版本 Chrome、http 地址之类的东西,这才意识到有点不对劲。
按照摩尔定律,半导体集成度是以 2 的指数增长的,10 年前的书几乎等于 100~300 年前的书。
这就像说要学习重力却去读牛顿的《自然哲学的数学原理》一样。
不过既然已经买了,也晚了。
只能尽量快读一遍,先把整体脉络了解一下就满足了。

1. 内容概览
第 1 章)初探
第 1 章的“尝鲜”内容现在看来太老了,很多都已经不再适用。
不过还是有可以学习的地方。
作者介绍的黑客网站 Wechall 如今已经偏老了,现在 TryHackMe、Hack The Box 这类网站的份额更高。
项目 | WeChall | TryHackMe | Hack The Box |
|---|---|---|---|
主要用途 | 各类 WarGame 排名及集合 | 初中级安全实战 + 学习 | 实战渗透测试 + 高级实战 |
用户数 | (官方未公开) | 约 450 万用户 | 非常活跃,在业界也很受欢迎 |
学习结构 | 主要是外部 WarGame 链接集合 | 分阶段学习课程 + CTF | 以攻破真实系统的实战练习为主 |
主要受众 | WarGame 爱好者,积分竞争型 | 初级~中级安全学习者 | 中级~专家及实战准备者 |
另外 2drunk2hack 这个活动也不办了,Paros 这类黑客工具也已经成了“遗产”。
不过通过这本书我至少知道了存在专门的黑客工具这一事实。
这类遗留工具没必要去学,知道一下“原来有这么个东西”就翻页即可。
项目 | Paros | Burp | ZAP | mitmproxy |
|---|---|---|---|---|
维护情况 | ❌ 已停止 | ✅ 活跃 | ✅ 活跃 | ✅ 活跃 |
是否支持最新 HTTPS | ❌ | ✅ | ✅ | ✅ |
实务使用情况 | ❌ | ✅ 碾压级 | △ | △ |
自动化 | ❌ | △ | △ | ✅ |
是否免费 | ✅ | ❌(Pro) | ✅ | ✅ |
我现在在 YouTube 上订阅的 Nomaltic Place 这位 UP 主,还介绍过像 OverTheWire 这样的 WarGame 网站。
比起这本书第 1 章,下面这些内容可能更有用一些。
第 2 章)Web 黑客
Web 黑客部分从安装 php、mysql 开始,简单涉及了利用搜索发现漏洞、文件上传、跨站、SQL 注入等内容。
Google Hacking 这一块挺新奇的,通过搜索运营者无意间暴露出来的漏洞。
目的 | 搜索示例 |
|---|---|
暴露的备份文件 |
|
环境变量泄露 |
|
目录列表 |
|
日志文件 |
|
配置文件 |
|
摄像头 |
|
管理员页面 |
|
还讲了通过上传图片进行攻击的方法。
比如在图片标签中注入 <img src="/board/file/shell.php> 这种内容,从而执行 shell。
之前我在家用服务器上开放了图片代理 API,结果被人往 img 标签里塞了 onerror={},然后试图用 fetch 函数和命令下载文件并执行,想获取管理员权限但没成功,我就亲眼看到过这种情况。

书里还写了制作 Web Shell 的内容。
作者介绍的是 C99,但这个也已经是“前朝故事”了。
现在更常用的是轻量、加密的 Web Shell。
时期 | 主流 Web Shell | 特点 |
|---|---|---|
2000 年代–2010 年代 | C99, R57, WSO | 以功能为中心,基于 PHP,体积大、特征明显 |
2020 年代中期 | China Chopper 变种 | 轻量 + 隐蔽 + 加密 |
最近(2024–2025) | Beima PHP Webshell 类型以及自定义/加密型 Shell | JSON 接口、加密请求、与 C2 联动 |
SQL 注入之前就知道一些,但通过这本书了解得更细一点。
关键点在于:不能信任用户输入。
必须经过校验过程之后,才能让数据进入后端。
第 3 章)逆向工程
逆向工程就是把现成的程序再拆解开来。
简单说,可以把用 Python 开发后用 pyinstaller 编译出来的 exe,又还原成 .py 的过程就叫逆向。
作者介绍了 Visual Studio Express、OllyDbg。
我整理了一下比较新的逆向工具。
工具 | 主要用途 | 特点 | 平台 |
|---|---|---|---|
Ghidra | 静态分析 + 反编译 | 强大的开源框架,自带反编译,由 NSA 开发 | Windows / Linux / macOS |
Radare2 | 静态分析(命令行/脚本) | 完全免费的开源项目,以 CLI 为中心,支持多种二进制格式 | Windows / Linux / macOS 等 |
x64dbg | 动态调试 | Windows 用 32/64 位调试器,带 GUI,十分流行 | Windows |
Frida | 运行时动态分析 | 可在程序运行中进行 Hook、追踪,对移动端分析很有优势 | Windows / Linux / macOS / 移动端 |
逆向过程中据说要疯狂按计算器,但现在丢进像 Cursor 这样的自动化工具里基本就搞定了。
不过一旦涉及混淆之类的东西,还是需要人工理解。
下面这几类问题据说 AI 仍然不太好处理。
领域 | 原因 |
|---|---|
逻辑错误 | 涉及“意图”问题 |
边界条件 | 需要架构层面的判断 |
安全/逆向 | 高度依赖上下文 |
异常值 | 需要直觉 |
还有后面的计算机体系结构和汇编语言部分,真是“疯了”。
CPU 结构以前学过,但关于变量存放位置、数字运算位置、字符串存放位置各不相同这一点,我还是第一次知道。
看到汇编里那些十六进制的加法、条件语句、循环语句,眼睛都花了。

接着是用 OllyDbg 进行实际逆向练习的内容。
反正我基本用不到这一类工具,就直接跳到第 4 章了。
第 4 章)系统黑客
系统黑客就是操作系统层面的攻击。
书里还有安装 Python 之类的内容,我就主要看漏洞相关的部分。
(1) 命令注入漏洞
命令注入一般出现在开发者信任用户输入的时候。
比如说,有如下代码:
system("ping " + user_input);这时如果用户输入 ; rm -rf /,开发者就会在不知情的情况下执行了预期之外的命令。
所以在接收用户输入时,必须做验证。
(2) 竞争条件(Race Condition)攻击
竞争条件攻击发生在多线程或多请求环境中,利用共享资源在“状态检查”和“实际使用”之间存在的时间差。
也就是利用在检查资源和使用资源之间“顺序错位”的情况。
问题在于:怎么抓住这个时机。
所以攻击者会发非常快、非常多、并发的请求,去挤进执行之间的空隙。

比如说,游乐园入场流程如下:
工作人员检查入场券 -> 打开门 -> 被检查过票的人入场 -> 关门如果先到的 A 检票通过了,但趁门开着,后到的 B 先钻了进去,这就属于竞争条件攻击。
要防御,就需要下面这样的设计:
1. 减少共享状态
2. 保证原子性 -> 检查 + 入场同时处理
3. 用 Lock 将访问共享资源的代码包起来,每次只处理一个请求
4. 交给 DB/存储来处理一致性
5. 安全地处理临时/共享文件
6. 设计重试/幂等 -> 同一请求只处理一次(3) 内存破坏攻击
对于缓冲区溢出(Buffer Overflow)攻击,通过这本书我有了更细致的理解。
之前在学 C 数组的时候学过溢出,所以这块还算容易理解。
就像下面这样,如果用户输入太长,就会越界写入相邻内存。
char arr[3];
scanf("%s", arr);第 5 章)漏洞挖掘(Bug Hunting)
在众多 Bug 中,那些可能引发安全问题的 Bug 就叫安全漏洞。
攻击者会利用这类漏洞获取权限或攻击用户。
(1) 如何发现漏洞
发现漏洞的方法有很多:
源码审计 —— 逐行分析源代码来找漏洞
二进制审计 —— 在没有源码时分析编译后的二进制文件
Fuzzing(模糊测试)—— 自动生成各种输入喂给软件,通过观察结果来寻找漏洞
(2) 漏洞类型
内存破坏 —— 栈溢出、堆溢出、空指针解引用、Use-After-Free 等
设计层面 —— 在设计时没充分考虑安全性的逻辑
(3) Web 漏洞挖掘
书中写的是 Zeroboard XE 远程代码执行,但内容太老了,我就改看最近的 React2Shell。
这是最近影响最大的漏洞之一,可以远程执行 shell 和命令。
问题在于,即便是用 npx create-next-app 创建、完全没有自定义 API 的应用也能被攻击。
攻击方式由 Github 用户 zr0n 做了实现。
在 AhnLab 的网站上还能看到对漏洞成因和攻击方式的详细分析。
核心内容可以概括如下:
Flight 스트림에서 참조/레코드 해석 중 일부가 Promise resolution(thenable 동화)을 거치는데, 공격자는 : 경로 대입에서 __proto__ 검증이 약한 점을 이용해 프로토타입을 오염시킨다. 그 결과 _response._formData.get 같은 메서드가 Function으로 바뀌면 이후 정상 코드 경로에서 get(...) 호출이 문자열 실행으로 변질된다. thenable은 이 변질된 경로가 자동으로 실행되도록 트리거하는 역할을 한다.
最关键的一步是利用 __proto__ 这个魔法属性来污染原型链。
这种攻击方式就叫作 原型污染(Prototype Pollution)。
(4) 不同环境下的漏洞挖掘
后面的内容介绍了 Android 上的提权漏洞、Windows 下 GomPlayer、Hangul 的远程代码执行等。
第 6 章)数字取证
主要讲了数字数据的特性、保证证据能力所需的特性、证据类型等。
一是书比较老,二是我目前对数字取证没什么兴趣,就大概翻了一下。
第 7 章)漏洞市场
书里把黑市介绍为漏洞市场的主要形式,但现在据说几乎看不到了。
黑市的使用方法对我也没什么用,就用下面这张表替代一下。
类型 | 现状 |
|---|---|
公开黑市 | ❌ 几乎消失 |
暗网论坛 | ⚠️ 收缩、伪装 |
基于聊天工具的私下交易 | ✅ 活跃 |
勒索软件生态 | ✅ 非常活跃 |
漏洞赏金(Bug Bounty) | ✅ 合法渠道 |
国家/情报机构灰色市场 | ✅ 高价交易 |
2. 读后感
通过这本书,至少把黑客的基本概念理了一遍。
黑客就是寻找安全漏洞的过程,这个过程和思考“家里怎么防盗”很像。
要考虑的是:谁可以从哪里进来、怎么进来、进来之后怎么获取权限。
整体读下来还挺有意思的,让我觉得以后也想持续学习黑客相关的内容。
以前获取编程信息很难,现在通过 AI 或者网络,几乎谁都可以轻松入门。
而 10 年这段时间,对开发领域来说简直是一个世纪。
书里讲的很多东西,现在都已经消失了。
如果想深入了解黑客相关内容,现在恐怕得另买新书,或者多利用网络资源才行。

댓글을 불러오는 중...