WP005——CTF赛题解析-Brainfuck

180 阅读2分钟

时效性

2025年7月23日

题目来源

ok - Bugku CTF平台

题目描述

image.png

Write Up

使用brainfuck解码工具,可以直接进行解码

image.png.

参考文档

总结

这道题可以算是眼界题,知道该类编码方式的人可以秒出,但是如果不知道Brainfuck的可能会完全无法下手

  1. 设计目的:幽默与主题

    • Brainfuck 由 Urban Müller 于 1993 年创建,旨在设计一种极其简单、最小化的图灵完备编程语言。它只使用 8 个字符 (> < + - . , [ ]) 作为指令。
    • Ook! 是由 David Morgan-Mar (也被称为 DMMKangaroO)在 2004 年左右创造的。它的设计纯粹出于幽默和主题性。DMM 设想这是一种 “为猩猩(Orangutans)设计的编程语言” 。文档通常写得像给猩猩的指南,充满了与丛林、香蕉相关的玩笑。
  2. 指令映射:一一对应

    • Ook! 的指令由三个仅由 Ook.Ook?Ook! 组合而成的双词序列构成。

    • 每一个 Ook! 的双词序列都精确对应 Brainfuck 的一个单字符指令。 映射关系如下:

      Brainfuck 指令Ook! 等效指令含义
      >Ook. Ook?指针加一
      <Ook? Ook.指针减一
      +Ook. Ook.指针指向的字节值加一
      -Ook! Ook!指针指向的字节值减一
      .Ook! Ook.输出指针指向的字节
      ,Ook. Ook!输入字节到指针指向的位置
      [Ook! Ook?循环开始
      ]Ook? Ook!循环结束
  3. 功能等价性:

    • 由于这种一一对应的映射关系,任何用 Brainfuck 编写的程序都可以机械地(通过查找替换)转换成等效的 Ook! 程序,反之亦然
    • Ook! 解释器/编译器在内部通常就是先将 Ook! 代码转换成对应的 Brainfuck 代码,然后再执行/编译那个 Brainfuck 代码。
    • 因此,Ook! 和 Brainfuck 在计算能力上是完全等价的,都是图灵完备的(尽管极其不实用)。
  4. 特点与“优势”:

    • 主题性/趣味性: Ook! 最大的“优势”就是它的娱乐性和主题性。用看起来像猩猩叫声 (Ook!) 的单词写程序,本身就极具幽默感和挑战性。
    • “可读性” (?): 相比 Brainfuck 纯粹的符号 (> < + - . , [ ]),Ook! 的指令看起来像是“单词”(尽管实际意义不大)。有些人开玩笑说它对猩猩更“可读”。当然,对人类来说,理解 Ook! 程序和理解 Brainfuck 程序一样困难。
    • 冗余性: Ook! 程序比等效的 Brainfuck 程序长很多(每个指令需要 6 或 7 个字符 Ook? 等,而 Brainfuck 只需 1 个字符)。