* Miscellaneous

** Discord

- Check the announcements channel

** Verbose

- It's JSFuck
- Evaluating it in the browser redirects you somewhere else...
- Find some other suitable decoder

** Locked Up

- Use =zipinfo= to look at archive contents
- Flag is one of the file names

** Admin Pass

- Description links to Git repo
- Looks like we have to crack a hash
- The comment doesn't have the right flag
- The Git history contains the right flag before it was redacted

** The Real Reversal

- Reverse the bytes
- Print the string
- Decode the numbers into bytes
- Print each char
- Reverse each line (because it's printed reverse)

** Broken GPS

- Write some code doing exactly what is asked from you
- Calculate the distance using Pythagoras
- Calculate the letter for each file

** Hidden Flag

- At the end of the file it spells out the key
- XOR each key byte with the first bytes, check whether it looks like
 the PNG magic bytes
- Repeat for the rest of the file
- Obtain an image displaying the flag

* Cryptography

** Reverse Search Algorithm

- RSA with known factors (check factordb or use YAFU)
- Calculate ~d = (p - 1) * (q - 1)~
- Decrypt with ~m = modexp(d, c, n)~
- Format message as string to obtain the flag

** A Lost Cause

- Write some code that does the reverse of the transformation for each
 possible offset, then prints the result
- One of those is the raw flag

* Forensics

** Chicken Crossing

- =strings= shows the flag at the end of the file

** Cool Image 2

- Remove the first 40 garbage bytes from the file

** Slap

- Check with =exiftool= for the flag

** Fish

- =steghide= key is at the end of the file
- Use =steghide= to extract the hidden text file

* Web

** md5--

- One way to solve this is to find a MD5 hash hashing to itself
- The other is to make use of PHP's funny ~==~ semantics
- If both strings look like numbers, they're coerced to numbers before
 comparing
- So, =9= is equal to =09= and =0e123= is equal to =0e999=
- I wrote a bruteforce script that checked for numerical strings
 hashing into an equivalent numerical string
- Eventually it found a working one

** Accessible Rich Internet Applications

- HTML file containing lots of JS
- When opened in a browser it creates lots of HTML, with way too many
 ARIA tags that have a sort key and a binary value
- Copy them into a text file, sort by the sort key, extract the binary value
- Decode the binary into a text with the flag

** Networked Password

- If you send a password starting with =h=, the request takes 0.5s
 longer than a password not starting with =h=
- For subsequent correct characters, the request time increases by
 0.5s for each
- I wrote me a script that uses this to guess the flag for me
- It's not perfect as there's the occasional false positive, this can
 be detected by subsequent guesses taking less time than the previous
 ones
- The charset is alphanumerical with underscores and braces