Jennifer 22 Full: Strapondreamer
The early 2020s witnessed a surge of creators who blend electronic production, internet‑based distribution, and a strong visual identity. StrapOnDreamer—the moniker of Los‑Angeles‑based producer Alex Morrison (a pseudonym)—exemplifies this trend. While much of the scholarship on electronic pop has centered on mainstream acts, the underground currents remain under‑examined. “Jennifer (22) – Full”, released on 12 October 2023 via Bandcamp and later circulated on SoundCloud and niche Discord servers, provides a fertile case study for exploring how contemporary artists articulate sexuality, autonomy, and self‑representation without recourse to mainstream label mediation.
This paper proceeds as follows: Section 2 outlines the methodological framework; Section 3 dissects the track’s musical structure; Section 4 analyses lyrical content; Section 5 reviews the visual component; Section 6 situates the work within current cultural discourses; and Section 7 concludes with implications for future research.
Main function (pseudocode after decompilation):
int main(void)
char buf[0x40]; // 64‑byte buffer
puts("Welcome to the Dream Catcher!");
printf("Enter your dream:\n");
gets(buf); // <<< vulnerable!
puts("Your dream is being processed…");
system(buf); // executes user‑controlled command
return 0;
Key points:
Because system() is called with buf as argument, if we can control the contents of buf and get execution to continue after the call (or before it returns), we can directly run any command. Unfortunately, the program immediately returns to main after system() finishes, which closes the process. So we need to hijack execution before system() is called, or we need a ROP chain that calls system("/bin/sh") and then returns cleanly. strapondreamer jennifer 22 full
buf[0x40] = 64 bytes
saved rbp = 8 bytes
saved return address = 8 bytes
So the layout of our input (from low to high addresses) is:
| Offset (bytes) | Content |
|----------------|--------------------------------------|
| 0 – 63 | filler (A * 64) |
| 64 – 71 | saved rbp (can be junk, e.g. B*8)|
| 72 – 79 | addr of system@plt (overwrite ret) |
| 80 – 87 | addr of the string /bin/sh (first arg) |
| 88 – 95 | addr to return to after system (e.g., main) |
| 96 – 103+ | /bin/sh\x00 (null‑terminated) |
Total payload length: 96 + 8 = 104 bytes (the string itself is 8 bytes inc. NUL).
Search the binary for /bin/sh:
$ strings -a strapondreamer | grep '/bin/sh'
Result: none – the binary does not contain the literal.
Thus we’ll write the string onto the stack as part of the payload.
“Jennifer (22) – Full” narrates a day in the life of a 22‑year‑old protagonist navigating desire, self‑exploration, and the paradoxical exposure inherent in digital platforms. The repeated refrain “I’m full, I’m whole, I’m you” operates as an affirmation of agency while acknowledging the fluidity of identity online.
A mixed‑methods approach was adopted:
| Method | Description | Sources | |--------|-------------|----------| | Musicological analysis | Formal breakdown (tempo, harmonic progressions, timbral choices). | DAW project files (provided by the artist under Creative Commons licence) and audio‑signal analysis using Essentia. | | Lyricic semiotics | Close reading of the lyrics, identification of recurring motifs and intertextual references. | Official lyric sheet (Bandcamp) and user‑generated transcripts. | | Visual semiotics | Frame‑by‑frame examination of the official music video (YouTube, 4 min 12 s). | Video downloaded under fair‑use for scholarly purposes. | | Reception study | Thematic analysis of comments on Bandcamp, Reddit threads (r/indieheads, r/electropop), and Discord fan server. | Archival scraping (July 2024) and qualitative coding with NVivo. | | Contextual literature review | Positioning within cyber‑feminist theory, DIY music economics, and digital intimacy studies. | Peer‑reviewed articles, monographs, and relevant conference proceedings. |
The challenge file provided by the organizers is a stripped ELF binary called strapondreamer. Running it locally produces:
$ ./strapondreamer
Welcome to the Dream Catcher!
Enter your dream:
If you type anything longer than ~64 bytes the program crashes with a segmentation fault, hinting at a classic stack‑overflow.
The goal is to obtain the flag that lives in /home/ctf/flag.txt. The flag is printed after the program forks a child that runs a shell – you just have to get a shell and read the file. The early 2020s witnessed a surge of creators