RowdyHacks XII

RowdyHacks is UTSA's annual student hackathon. Its Capture the Flag spanned eight categories, from web and cryptography to binary exploitation and ICS/OT.

1st of 62 teams, all 28 challenges solved, 5,825 points

Host
The University of Texas at San Antonio (UTSA)
When
October 3-4, 2026
Format
In person, San Antonio, TX
Result
1st of 62 teams, all 28 challenges solved, 5,825 points
Team
Difference (Derek Wei, Ahaan Wanvari)

A team result first and foremost. Within it, Derek was the team's top scorer, with 3,575 of the team's 5,825 points.

Scoreboardall 28 challenges

Challenge statistics published by the RowdyHacks XII organizers after the event closed. Two checks hold: solve counts sum to 474, matching the organizers' stated correct-submission total, and the 27 challenges on the board at the freeze sum to 5,825, matching the team's recorded score.

teams competing
62
challenges on the board
28
correct submissions
474
of 2,396 submissions were correct
19.8%

2 challenges were solved by a single team out of 62: Back to Nothing and Locked File. Team Difference solved both.

Where the field finished

Scores across all 62 teams as the public scoreboard stood at the freeze, in 211-point brackets. The median team finished on 645, and 9 teams finished on a single 25-point solve. The bar on the far right is Team Difference, 850 points clear of second place.

029545908

points scored

How rare each solve was

Every RowdyHacks XII challenge, rarest solve first, with the number of teams out of 62 that solved it.
ChallengeCategoryPointsSolved byShare of 62 teams
Back to Nothingforensics60011 of 62 teams
Locked Filecrypto25011 of 62 teams
Find me !!misc10033 of 62 teams
Do You Know What Will Rock You?misc30044 of 62 teams
beam me inpwn25055 of 62 teams
Dutiful Maid Troublesnetwork20066 of 62 teams
Buffer Overrunpwn30077 of 62 teams
Marisa Stole the Precious Ports!network15077 of 62 teams
Passing Throughosint30088 of 62 teams
A Small Toolkitcrypto2501010 of 62 teams
Case Filesweb2501010 of 62 teams
Remilia's Wine Problemnetwork1501010 of 62 teams
exact changerev2501111 of 62 teams
Sleepy Gate Guardiannetwork1001111 of 62 teams
Works on My Machinerev3501212 of 62 teams
sonionforensics2501313 of 62 teams
Cirno's Perfect Guest Accessnetwork1001717 of 62 teams
teto territorymisc2502222 of 62 teams
Pieces of the Puzzleforensics2502323 of 62 teams
Military OSINTosint1502424 of 62 teams
The Gatekeeperrev2002424 of 62 teams
read receiptscrypto2002525 of 62 teams
world is mineweb1502525 of 62 teams
Hidden in Plain Sightforensics2002828 of 62 teams
WRONG TURNforensics2003535 of 62 teams
Goombaforensics1004242 of 62 teams
Gensokyo Industry Standardsnetwork504545 of 62 teams
YOUR FIRST CTF!!!misc254545 of 62 teams

The 28 challenges are worth 5,925points in total. The team's recorded score is5,825, the 27 solved before the board froze. The remaining 100 belong to Find me !!, a meet-the-author challenge credited afterwards.

Writeups28 total

Forensics · 6 writeups
  1. The 600-point forensics flagship: a 7-Zip reassembled from element symbols, a custom byte transform undone, a glyph panel read, and a spectrogram flag.

  2. A 250-point network-forensics challenge: reassembling a split archive from six pieces scattered across HTTP responses and Base64-encoded DNS TXT records.

  3. sonion

    250 pts

    A 250-point forensics-into-reversing challenge: carving a ZIP from a PNG, then inverting a 46-byte checker's per-byte transform to recover the accepted code.

  4. A 200-point layered-stego challenge: an EXIF hint led to a ZIP appended after a JPEG end marker, then a steghide payload behind a passphrase.

  5. WRONG TURN

    200 pts

    A 200-point network-forensics challenge: carving an HTTP-transferred PDF out of a packet capture to read the briefing that hid the flag among decoy traffic.

  6. Goomba

    100 pts

    A 100-point forensics challenge where a file posing as a JPEG is really a PNG, hiding the flag in the least-significant bits of its RGB channels.

ICS/OT & network · 6 writeups
  1. A 200-point ICS/OT challenge: toggling one Modbus coil enabled a holding-register output whose ASCII bytes spelled the flag, then restoring the coil.

  2. A 150-point ICS/OT recon challenge: use nmap and Modbus port knowledge to pick the real OpenPLC from three decoys, then read its holding registers.

  3. A 150-point ICS/OT challenge: read-only Modbus holding-register reads over the OT tunnel surfaced the overpressured tank value needed for the flag.

  4. A 100-point ICS/OT challenge: an exposed SCADA-LTS HMI view returned the flag through a guest-accessible component that required no login.

  5. A 100-point ICS/OT challenge: a SCADA-LTS dashboard left on the default administrator account exposed the flag in a data point's history.

  6. A 50-point ICS/OT warm-up: recovering the well-known TCP port Modbus uses, confirmed against the local Nmap service registry rather than from memory.

Miscellaneous · 4 writeups
  1. A 300-point challenge chaining a hidden page, an SSH password found in RockYou, and a ZIP password also from RockYou to reach the flag.

  2. A 250-point multi-stage challenge: a PNG with an appended WAV whose stereo-difference DTMF tones spelled the password to a final encrypted ZIP.

  3. Find me !!

    100 pts

    The one challenge on the board with no technical component: find and speak to the challenge author during the hackathon. Credited after the freeze.

  4. A 25-point workshop warm-up: reading a check-in page's source to decode a Base64 flag from its JavaScript, past a decoy HTML comment.

Cryptography · 3 writeups
  1. A 250-point crypto challenge: a Vigenère letter revealed a key, a four-digit PIN fell to a tiny hash search, and its SHA-256 digest XOR-decrypted the flag.

  2. A 250-point crypto challenge solved by GPU-cracking an AES-encrypted 7-Zip. Documents the known approach; the password and flag were not preserved.

  3. A 200-point crypto challenge exploiting AES-CTR keystream reuse: a reset counter let one known plaintext recover the keystream and decrypt another.

Reverse engineering · 3 writeups
  1. A 350-point reversing challenge with a two-stage handshake: static analysis recovered the first transmission, a connection-specific transform the second.

  2. A 250-point reversing challenge: reconstructing a JAR's hidden service command by reproducing its coin-reconciliation algorithm to derive the service code.

  3. A 200-point reversing challenge: inverting a per-byte transform in a stripped x86-64 ELF to reconstruct the 24-byte passphrase it accepts.

Binary exploitation (pwn) · 2 writeups
  1. A 300-point pwn challenge: a textbook ret2win stack overflow in a 32-bit binary with no canary and no PIE, returning into a win() that spawns a root shell.

  2. beam me in

    250 pts

    A 250-point pwn challenge against a vulnerable Erlang/OTP SSH daemon allowing pre-authentication command execution, reading the flag through the tunnel.

OSINT · 2 writeups
  1. A 300-point OSINT investigation: geolocating a lift bridge in New Orleans and pulling eight facts, down to a federal case number, from public records.

  2. A 150-point OSINT challenge: identifying a fighter wing from its aircraft markings and resolving its home station to the decimal coordinates the checker wanted.

Web · 2 writeups
  1. Case Files

    250 pts

    A 250-point web challenge and textbook BOLA: a skipped case ID exposed a classified case and its evidence through predictable, unauthorized API paths.

  2. A 150-point web challenge: forum hints pointed at SQL injection in a login field, and a comment-terminator payload authenticated as staff.