O AsisCTF é um grande CTF internacional que acontece todo ano, atualmente todos podem participar tanto do qualifier quanto da final. É considerado um CTF difícil e um dos mais famosos de acordo com a comunidade.
Esse desafio foi resolvido por 30 times de 357 no total. Eu considero ele de nível médio.
O desafio (arquivo chall.sage) dá pra gente 3 pontos (P, Q e R) numa curva elíptica e um valor enc que é um a mensagem multiplicada ao ponto P da curva. A função monadd representa a adição de dois pontos na curva, a função monprod multiplica um valor escalar a um ponto, a função encrypt faz a multiplicação da mensagem a um ponto e a função monon verifica se o ponto ta na curva.
A primeira coisa que devemos notar é que enc também é um ponto da curva, logo temos 4 pontos. A segunda coisa que devemos perceber é a equação da curva, na função monon de acordo com essa parte do código (a*x**2 + y**2 - d*x**2*y**2) % p == 1 a função da curva é: