# 【juice-shop】★ 开篇：消失的计分板

# 【juice-shop】★ 开篇：消失的计分板

启动服务，进入战场：`http://127.0.0.1:3000`

-----

## 0x01 任务目标：找到“成绩单”

<blockquote style="border-left: 5px solid #0366d6; background-color: #f1f8ff; padding: 15px; margin: 1rem 0; color: #0550ae; border-radius: 0 5px 5px 0;">
<strong>🎓系统任务简报</strong>
<p>1. <strong>核心机制</strong>：应用遍布漏洞，你的所有“战绩”都会记录在 <strong>Score Board（计分板）</strong>。</p>
<p>2. <strong>隐藏关卡</strong>：导航栏里找不到它，<strong>找到计分板</strong>本身就是第一个挑战。</p>
<p>3. <strong>破局工具</strong>：按下 <strong>F12</strong>，线索藏在 JavaScript 代码里。</p>
</blockquote>

-----

## 0x02 实战：顺藤摸瓜

### 1. 定位导航逻辑

由于侧边栏通常由**前端路由**控制，我们先从已知的导航项入手。

  * **操作**：F12 选中侧边栏元素，观察已知的链接。
  * **线索**：发现路由 `/contact`。

### 2. 深入 JS 审计

在调试器 (Debugger) 中全局搜索 `/contact`，我们锁定了两个关键文件：

  * `hacking-instructor-xxx.js`
  * `main.js`（重点！这是前端逻辑的核心）

### 3. 关键词爆破：`routerLink`

在 `main.js` 中搜索 Angular 的路由指令 `routerLink`。

  * **现状**：搜到 61 个结果。
  * **笨办法**：一个个拼接到 URL 后面测试（如 `/#/about`）。
  * **终点**：最终锁定 `/#/score-board`。

**🏆 挑战达成！**

```text
http://127.0.0.1:3000/#/score-board
```

-----

## 0x03 代码审计：它是怎么“藏”的？

### 🔍 找到它 (Find It)

在源码 **第 114 行**，我们发现了这个路由的明文定义：

### 🛠️ 修复它 (Fix It)

面对三个修复方案，为什么选 **Fix 2**？

| 选项 | 修复方式 | 评价 | 结论 |
| :--- | :--- | :--- | :--- |
| **Fix 1** | 直接删除路由 | ❌ 功能被阉割 | 过于暴力 |
| **Fix 2** | **Base64 编码路径** | ✅ **增加搜寻成本** | **本关正解** |
| **Fix 3** | 直接显示路由 | ❌ 放弃抵抗 | 毫无安全性可言 |

> **底层逻辑**：Fix 2 使用了 `atob('c2NvcmuUtYm9hcmQ=')`。
> 虽然这只是**混淆（Obfuscation）**而非加密，但它成功让 `score-board` 躲过了简单的“全文搜索”，强迫黑客必须理解代码逻辑才能找到路径。

-----

## 0x04 总结

作为安全研究的第一步，**信息收集 (Recon)** 永远是核心。计分板的隐藏告诉我们：**不要只看页面上有什么，要看代码里写了什么。**

