┌───────────────────────┐
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
│                       │
└───────────────────────┘
AES Scissor Co. 3 — BYUCTF 2026
~ Imattas aka Zemi
 Category: Cryptography
 Author: Imattas aka Zemi
 Flag: byuctf{n0m_n0m_c00k13_a4fb6c0f}
 Source Path: crypto/aes-scissor-co-3

────────────────────────────────────────────────────────────────────────────────

--[ Challenge Description ]--
-- text --
# AES Scissor Co 3

### Description

Okay, I vibe coded the final version. This time I listened to the AI and let it use AES GCM, which is bulletproof. It even authenticates the ciphertext so a bitflip attack can't happen (that's what AI said, anyways)

Files:
- [aes-scissor-co-3.zip](https://github.com/BYU-CSA/BYUCTF-2026/blob/main/crypto/aes-scissor-co-3/aes-scissor-co-3.zip)

### Setup

You need a `.env` file before you can start this challenge. This can be generated with this command:
echo "APPSECRETKEY="$(openssl rand -hex 32)"" > .env

This can also be used to re-generate said env file if needed. Docker can be started with `docker compose up -d`, which will take a minute or two because it builds the crate.
────────────────────────────────────────────────────────────────────────────────

--[ Provided Materials ]--

- Repository folder
https://github.com/BYU-CSA/BYUCTF-2026/tree/main/crypto/aes-scissor-co-3
- crypto/aes-scissor-co-3/README.md https://github.com/BYU-CSA/BYUCTF-2026/blob/
main/crypto/aes-scissor-co-3/README.md
- crypto/aes-scissor-co-3/aes-scissor-co-3.zip https://github.com/BYU-CSA/BYUCTF
-2026/blob/main/crypto/aes-scissor-co-3/aes-scissor-co-3.zip
- crypto/aes-scissor-co-3/solve/solve.sage https://github.com/BYU-CSA/BYUCTF-202
6/blob/main/crypto/aes-scissor-co-3/solve/solve.sage
- crypto/aes-scissor-co-3/solve/solve.sage.py https://github.com/BYU-CSA/BYUCTF-
2026/blob/main/crypto/aes-scissor-co-3/solve/solve.sage.py

────────────────────────────────────────────────────────────────────────────────

--[ Recon / Initial Analysis ]--

This page imports the BYUCTF 2026 source material for the Cryptography challenge
AES Scissor Co. 3. The prompt is kept separate from the solve notes, and
upstream artifacts are linked so the challenge can be replayed from the original
repository.

────────────────────────────────────────────────────────────────────────────────

--[ Vulnerability / Observation ]--

The useful observation comes from the imported solve notes below. I kept the
original technical path intact while normalizing the page metadata, challenge
grouping, and author attribution for the Volume 2 writeup archive.

────────────────────────────────────────────────────────────────────────────────

--[ Exploitation / Solution ]--

Source: crypto/aes-scissor-co-3/README.md https://github.com/BYU-CSA/BYUCTF-2026
/blob/main/crypto/aes-scissor-co-3/README.md

There's a solve script in the ./solve folder (solve.sage https://github.com/BYU-
CSA/BYUCTF-2026/blob/main/crypto/aes-scissor-co-3/solve/solve.sage). Basically,
the IV generation is time-based, so you can get two ciphertext with the same IV
pretty easily. Then, you can not only bit flip the ciphertext, but you can also
forge a mac. There are some weird components outside of the usually basic
version of this challenge- no AAD, a ciphertext that needs to be padded, and
url-safe base64, but it's simple enough once you get past that.

Flag: byuctf{n0m_n0m_c00k13_a4fb6c0f}

────────────────────────────────────────────────────────────────────────────────

--[ Full Exploit Script ]--

- crypto/aes-scissor-co-3/solve/solve.sage https://github.com/BYU-CSA/BYUCTF-202
6/blob/main/crypto/aes-scissor-co-3/solve/solve.sage
- crypto/aes-scissor-co-3/solve/solve.sage.py https://github.com/BYU-CSA/BYUCTF-
2026/blob/main/crypto/aes-scissor-co-3/solve/solve.sage.py

────────────────────────────────────────────────────────────────────────────────

--[ Key Takeaways ]--

- The BYUCTF 2026 challenge material is preserved with local archive formatting.
- The page author is normalized to Imattas aka Zemi.
- The source repository remains linked for handouts, services, and solve
artifacts.