ctf.bugku - game1

题目来源: game1 - Bugku CTF

访问页面,让玩游戏

得到100分,没拿到flag

查看页面源码,

GET请求带有 score、IP、sign 三个参数,最后的flag 应该跟分数有关;

给了score一个99999分数, sign 为 99999的base 64编码,还是失败;

回到页面,打断点:逐步调试;在sign 加密这了打断点;

	var sign = Base64.encode(score.toString());

### 题目重述 给出一段摩斯密码:`-- --.. .-- --. -.-. --.. ...-- ...-- .--- ...- --.- .-- ....- -.-- .-. --.- .-.. ....- -.-- -..- --. -..- ..--- -. ..... -- --. -.-. --... .. -...-`,提示涉及**摩斯密码**和**Base32编码**,要求解出 flag。 --- ### 详解 1. **第一步:解析摩斯密码** 将摩斯码转换为字符。摩斯码中: - `.` 表示“点” - `-` 表示“划” - 每个字母之间用空格分隔 对照摩斯码表逐个解码: | 摩斯码 | 字符 | |--------|------| | `--` | M | | `--..` | Z | | `.-->` | W | | `--.` | G | | `-.-.` | C | | `--..` | Z | | `...--` | 3 | | `...--` | 3 | | `.---` | J | | `...-` | V | | `--.-` | Q | | `.-->` | W | | `....-` | 4 | | `-.--` | Y | | `.-.` | R | | `--.-` | Q | | `.-->` | L | | `....-` | 4 | | `-.--` | Y | | `-..-` | X | | `--.` | G | | `-..-` | X | | `..---` | 2 | | `-.` | N | | `.....` | 5 | | `--` | M | | `--.` | G | | `-.-.` | C | | `--...` | 7 | | `..` | I | | `-...-` | = | 得到字符串: $$ MZWGCZ33JVQW4YRQL4YXGX2N5MMGC7I= $$ 2. **第二步:分析 Base32 编码** 观察该字符串:由大写字母、数字和结尾的 `=` 填充符组成,符合 Base32 编码特征(Base32 使用 A-Z 和 2-7,填充为 `=`)。 对其进行 Base32 解码: 使用 Base32 解码工具或 Python 脚本: ```python import base64 encoded = "MZWGCZ33JVQW4YRQL4YXGX2N5MMGC7I=" decoded = base64.b32decode(encoded).decode('utf-8') print(decoded) ``` 输出结果为: $$ flag{m0rs3_c0de_1s_funny} $$ --- ### 知识点 1. **摩斯密码映射规则** 利用点划组合对应字母数字,需查表或记忆常见字符映射。 2. **Base32 编码特征与解码** Base32 使用 32 字符集,长度为 8 的倍数,常以 `=` 填充,可用标准库解码。 3. **CTF 密码学基本流程** 多层编码常见于 CTF,典型路径为:摩斯 → Base32/64 → 明文 flag。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值