18 lines
843 B
Markdown
18 lines
843 B
Markdown
This crypto challenge was part of the HTB University CTF we played in 2024
|
|
|
|
The problem is basically the following (all values are 128 bitvectors):
|
|
given h1 and h2, find r1,r2,r3,r4,s1,s2, such that:
|
|
ROL(s1, r1) ^ ROL(s2, r2) == h1
|
|
ROL(s1, r3) ^ ROL(s2, r4) == h2
|
|
|
|
z3 doesn't seem to be able to solve this directly in a fast manner (challenge expects solution in less than 2 seconds)
|
|
|
|
The crypto problem was then "reduced" to the following:
|
|
|
|
Given any value x with parity 0, find y and c, such that (y ^ (ROL(y,c))) == x
|
|
Whether this even has a (good) solution, would also not seem clear, but sometimes it's worth just asking z3...
|
|
|
|
Find a solution for this problem with z3 in `z3test.py`
|
|
|
|
If you want to get an actual flag, copy paste the `compute_yc` function in the exploit.py under "TODO" and run
|
|
`./exploit.py courses.sec.in.tum.de 13371` |