SECCON CTF 2025 Final

Time: 2025.03.01-02 (onsite)

I participated SECCON 13th Final as a member of P1G SEKAI this weekend, and we finally got 4th among international teams.

rank

Nice crypto challenges, and I solved 3 out of 4. IF ONLY I’d ever taken some time to study UOV.

solve

Or maybe I was just too nervous.

XO

RSA+ (8 solves)

It turns out that we can send two composite number $(p, q)$, both smaller than 512 bits. Then we can just find all the solutions on $p_i$ and combine them with CRT.

solution: exp.py

I believe there exists a better way though.

DLP+ (7 solves)

A simple idea is that we try to control $g^x$ (or $h^x$) to be small. Then we can get $h^x$ with some bruteforce and solve DLP to get $x$. I found some luck on Mersenne Prime $p = 2^n - 1$, where $g^x \pmod{p}$ is very small. Finally I chose M2281 for effective DLP solver.

Which took me a lot of time and luck, definitely NOT that effective.

solution: exp.py

@Sceleri and @soon_haari used $p = 2^a \cdot 3^b + 1$. It does make more sense since $g = 2^{a-1} \cdot 3^b$ and $h = 2^a \cdot 3^{b-1}$ (same in our solution). But I donot want to go through it again so just let it go.

image

hell_summon (6 solves)

I spent the whole afternoon day 1 on this one.

We have 42 pairs of $(m_i, c_i = r \cdot (m_i \oplus H) + e_i \pmod{p})$, where $e_i$ is due to the truncation. We rewrite $m_i \oplus H$ as $\Sigma_{j=0}^{39} (m_{i, j} + H_{j} - 2 \cdot m_{i, j} \cdot H_{j}) \cdot 2^{j}$.

$$\Rightarrow \Sigma_{j=0}^{39} r \cdot H_{j} \cdot ((1 - 2 \cdot m_{i, j}) \cdot 2^{j}) + r \cdot m_i + e_i \pmod{p}$$

Orthogonal Lattice seems to be an adorable choice, and it worked well. On the first attempt I found one short vector $v$ where $\vec{v} \cdot \vec{c} = \vec{v} \cdot \vec{e} \pmod{p}$, and it’s small enough to omit $p$. But I didn’t manage to solve $\vec{e}$.

On another attempt at midnight, I used vectors $(v_0, v_1)$ orthogonal to $\Sigma_{j=0}^{39} r \cdot H_{j} \cdot ((1 - 2 \cdot m_{i, j}) \cdot 2^{j})$. Then we have two equations $r \cdot (\vec{v_i} \cdot \vec{m}) + \vec{v_i} \cdot \vec{e} \pmod{p}$, where $\vec{v_i} \cdot \vec{e}$ is small. Now we can solve it as a simple HNP.

solution: exp.py

Definitely not a pleasing code but whatever.

*x_x (4 solves)

Working on it. UOV and sth bluhbluhbluh.

In Japan

My first time to Japan, also my first time abroad. Not bad actually.

seccon view food

My teammates are very strong! Glad to work with them XD
And also great to meet many friends from P1G SEKAI.

view1

view2 view3

Sincere thanks to @crazyman :D (Wish I could go to Mt. Fuji.)
I realy enjoyed Tokyo. It’d be better if I can hang out for one or two two more days.