]> git.somenet.org - pub/jan/ctf-seminar.git/blob - writeups/scd/tasteless.md
Add asis2019 writeup
[pub/jan/ctf-seminar.git] / writeups / scd / tasteless.md
1 # Tastless
2 * David Schmidt (01525469)
3 * scd
4 * Played on Saturday, 26. October at SBA
5
6
7 ## Cry - Babypad
8 First idea after an inspection of the source code that a one time pad, where the key (in our case the flag) gets reused, which made it unsafe. Because the key cancels out if we xor two cipher texts. We get first random xor second random and might learn something about the random value:
9
10 c1 = random1 xor flag </br>
11 c2 = random2 xor flag </br>
12 c2 xor c1 = random1 xor random2 xor flag xor flag = random1 xor random2. </br>
13
14 To get many cipher texts I wrote a script which collects them from the server:
15 ```
16 from pwn import *
17 i = 0
18 f= open("ciphertext.txt","a+")
19 result = ''
20 while i < 15:
21     try:
22         i = i + 1
23         conn = remote('hitme.tasteless.eu',10401)
24         line = conn.recv().encode('hex')
25         f.write(line + '\n')
26         conn.close()
27         time.sleep(2)
28     except:
29         i =i+1
30 ```
31 In the first attempts I tried existing online scripts like `https://github.com/Jwomers/many-time-pad-attack/blob/master/attack.py` since this didn't work because our random messages contain unprintable and therefore not guessable characters. We thought that if we have enough ciphers and xor them we might conclude from them, one random message and get the flag. Before we were able to try this approach georg solved it from remote.
32
33 ## Stego - RGB
34 Got the traffic dump from the challenge. Took a first look on the tcp and http streams. Extracted the png picture transferred, with wireshark. Since the challenge is in the stego category, I took a closer look with `https://georgeom.net/StegOnline/`. In the "Bit Planes" r0, g0 and b0 we found hints to RFC's, but couldn't really use the hints....
35 I also checked the picture with pngcheck, binwalk, strings and steghide but couldn't find anything with it...
36
37 ### Web - Timewarp
38 Example Token: `Z2l2ZUZsYWcvRXVyb3BlL0Jlcmxpbg==.U2F0IE9jdCAyNiAxODoyODoxMyAyMDE5.4UFcqiKnvQ-xZZw4W971njWwvh1GXoJsGuCJSekFlyW-GO3-HLezB2I3DBITi3NJ4_vhCoV11t32PoaPBvPWCQ==`
39
40 Collected a token and analyzed it with `https://gchq.github.io/CyberChef/` found out that the first part is give Flag with the timezone and current timestamp base 64 encoded (`giveFlag/Europe/BerlinSat Oct 26 18:28:13 2019`) the second part is a base64 urlsave encoded hash in our example `e1415caa22a7bd0fb1659c385bdef59e35b0be1d465e826c1ae08949e9059725be18edfe1cb7b30762370c12138b7349e3fbe10a8575d6ddf63e868f06f3d609`, probably sha512. Tried to rebuild the hash by ourselves, with multiple different hashalgorithmen and just some parts of the first part, but without any success. Another idea because of the name, the ending of the challenge in the morning and the upcoming time change, that we just need a token in the "old time" in the hour of the time change and submit it when the time changed back so it look like one of the future.
41
42 ## Web - Gabbr
43 I just took a short look at the challenge, between the stego challenge got published and the solve of babypad. After a first look at the page I tried to submit some XSS payloads from `https://xsses.rocks/sample-page/` . Since it wasn't executed as hoped and the nonce set in the page source I checked the csp with `https://csp-evaluator.withgoogle.com/`, this reported a `High severity finding` that the base-url is missing, after a further inspection I couldn't find anything to use this information...