From f4e093a6727135f8f59fadd756453d65ecd9e763 Mon Sep 17 00:00:00 2001 From: h7x4 Date: Fri, 3 Jul 2026 01:39:22 +0900 Subject: [PATCH] rev/flag_hunters --- rev/flag_hunters/flag.txt | 1 + rev/flag_hunters/lyric-reader.py | 134 +++++++++++++++++++++++++++++++ rev/flag_hunters/output.log | 59 ++++++++++++++ 3 files changed, 194 insertions(+) create mode 100644 rev/flag_hunters/flag.txt create mode 100755 rev/flag_hunters/lyric-reader.py create mode 100644 rev/flag_hunters/output.log diff --git a/rev/flag_hunters/flag.txt b/rev/flag_hunters/flag.txt new file mode 100644 index 0000000..7f34d3c --- /dev/null +++ b/rev/flag_hunters/flag.txt @@ -0,0 +1 @@ +picoCTF{dummy} diff --git a/rev/flag_hunters/lyric-reader.py b/rev/flag_hunters/lyric-reader.py new file mode 100755 index 0000000..a5a6e1d --- /dev/null +++ b/rev/flag_hunters/lyric-reader.py @@ -0,0 +1,134 @@ +#!/usr/bin/env python3 + +import re +import time + + +# Read in flag from file +flag = open('flag.txt', 'r').read() + +secret_intro = \ +'''Pico warriors rising, puzzles laid bare, +Solving each challenge with precision and flair. +With unity and skill, flags we deliver, +The ether’s ours to conquer, '''\ ++ flag + '\n' + + +song_flag_hunters = secret_intro +\ +''' + +[REFRAIN] +We’re flag hunters in the ether, lighting up the grid, +No puzzle too dark, no challenge too hid. +With every exploit we trigger, every byte we decrypt, +We’re chasing that victory, and we’ll never quit. +CROWD (Singalong here!); +RETURN + +[VERSE1] +Command line wizards, we’re starting it right, +Spawning shells in the terminal, hacking all night. +Scripts and searches, grep through the void, +Every keystroke, we're a cypher's envoy. +Brute force the lock or craft that regex, +Flag on the horizon, what challenge is next? + +REFRAIN; + +Echoes in memory, packets in trace, +Digging through the remnants to uncover with haste. +Hex and headers, carving out clues, +Resurrect the hidden, it's forensics we choose. +Disk dumps and packet dumps, follow the trail, +Buried deep in the noise, but we will prevail. + +REFRAIN; + +Binary sorcerers, let’s tear it apart, +Disassemble the code to reveal the dark heart. +From opcode to logic, tracing each line, +Emulate and break it, this key will be mine. +Debugging the maze, and I see through the deceit, +Patch it up right, and watch the lock release. + +REFRAIN; + +Ciphertext tumbling, breaking the spin, +Feistel or AES, we’re destined to win. +Frequency, padding, primes on the run, +Vigenère, RSA, cracking them for fun. +Shift the letters, matrices fall, +Decrypt that flag and hear the ether call. + +REFRAIN; + +SQL injection, XSS flow, +Map the backend out, let the database show. +Inspecting each cookie, fiddler in the fight, +Capturing requests, push the payload just right. +HTML's secrets, backdoors unlocked, +In the world wide labyrinth, we’re never lost. + +REFRAIN; + +Stack's overflowing, breaking the chain, +ROP gadget wizardry, ride it to fame. +Heap spray in silence, memory's plight, +Race the condition, crash it just right. +Shellcode ready, smashing the frame, +Control the instruction, flags call my name. + +REFRAIN; + +END; +''' + +MAX_LINES = 100 + +def reader(song, startLabel): + lip = 0 + start = 0 + refrain = 0 + refrain_return = 0 + finished = False + + # Get list of lyric lines + song_lines = song.splitlines() + + # Find startLabel, refrain and refrain return + for i in range(0, len(song_lines)): + if song_lines[i] == startLabel: + start = i + 1 + elif song_lines[i] == '[REFRAIN]': + refrain = i + 1 + elif song_lines[i] == 'RETURN': + refrain_return = i + + # Print lyrics + line_count = 0 + lip = start + while not finished and line_count < MAX_LINES: + line_count += 1 + for line in song_lines[lip].split(';'): + if line == '' and song_lines[lip] != '': + continue + if line == 'REFRAIN': + song_lines[refrain_return] = 'RETURN ' + str(lip + 1) + lip = refrain + elif re.match(r"CROWD.*", line): + crowd = input('Crowd: ') + song_lines[lip] = 'Crowd: ' + crowd + lip += 1 + elif re.match(r"RETURN [0-9]+", line): + lip = int(line.split()[1]) + elif line == 'END': + finished = True + else: + print(line, flush=True) + time.sleep(0.5) + lip += 1 + + + +reader(song_flag_hunters, '[VERSE1]') diff --git a/rev/flag_hunters/output.log b/rev/flag_hunters/output.log new file mode 100644 index 0000000..f735cea --- /dev/null +++ b/rev/flag_hunters/output.log @@ -0,0 +1,59 @@ +$ nc verbal-sleep.picoctf.net 58904 +Command line wizards, we’re starting it right, +Spawning shells in the terminal, hacking all night. +Scripts and searches, grep through the void, +Every keystroke, we're a cypher's envoy. +Brute force the lock or craft that regex, +Flag on the horizon, what challenge is next? + +We’re flag hunters in the ether, lighting up the grid, +No puzzle too dark, no challenge too hid. +With every exploit we trigger, every byte we decrypt, +We’re chasing that victory, and we’ll never quit. +Crowd: ;RETURN 0 + +Echoes in memory, packets in trace, +Digging through the remnants to uncover with haste. +Hex and headers, carving out clues, +Resurrect the hidden, it's forensics we choose. +Disk dumps and packet dumps, follow the trail, +Buried deep in the noise, but we will prevail. + +We’re flag hunters in the ether, lighting up the grid, +No puzzle too dark, no challenge too hid. +With every exploit we trigger, every byte we decrypt, +We’re chasing that victory, and we’ll never quit. +Crowd: +Pico warriors rising, puzzles laid bare, +Solving each challenge with precision and flair. +With unity and skill, flags we deliver, +The ether’s ours to conquer, picoCTF{70637h3r_f0r3v3r_0099cf61} + + +[REFRAIN] +We’re flag hunters in the ether, lighting up the grid, +No puzzle too dark, no challenge too hid. +With every exploit we trigger, every byte we decrypt, +We’re chasing that victory, and we’ll never quit. +Crowd: +Pico warriors rising, puzzles laid bare, +Solving each challenge with precision and flair. +With unity and skill, flags we deliver, +The ether’s ours to conquer, picoCTF{70637h3r_f0r3v3r_0099cf61} + + +[REFRAIN] +We’re flag hunters in the ether, lighting up the grid, +No puzzle too dark, no challenge too hid. +With every exploit we trigger, every byte we decrypt, +We’re chasing that victory, and we’ll never quit. +Crowd: +Pico warriors rising, puzzles laid bare, +Solving each challenge with precision and flair. +With unity and skill, flags we deliver, +The ether’s ours to conquer, picoCTF{70637h3r_f0r3v3r_0099cf61} + + +[REFRAIN] +We’re flag hunters in the ether, lighting up the grid, +No puzzle too dark, no challenge too hid.