Skip to main content

(Moyen) Un simple Oracle 2/2

Description

Contrairement à l'étape 1, cette fois le serveur ne nous envoie pas N :

image-1654951364136.png

Mais nous n'avons pas eu besoin de N lors de notre attaque de la phase 1. On peut alors tout simplement prendre le même script et modifier les paramètres pour qu'il corresponde au premier retour du serveur.

On obtient donc directement le flag :

404CTF{L3_m0dul3_357_t0uj0ur5_7r0uv4bl3}

Code

import socket

client = socket.socket()
client.connect(('challenge.404ctf.fr',30594))
init = client.recv(4096).split(b'\n')

# Permet de bypass les problèmes de buffer si jamais les informations envoyés dépassent les 4096 caractères
while init[-1] != b'> ':
    l = client.recv(4096).split(b'\n')
    init[-1] += l[0]
    init = init + l[1:]

cypher = int(init[2])   
e = int(init[4].split(b" = ")[1])

c2 = 2**e
s = str(c2 * cypher) + "\n"
client.send(s.encode())
s = client.recv(4096)
p = str(int(int(s.split(b'\n')[1]) // 2))
bytes_object = bytes.fromhex(hex(int(p))[2:])
ascii_string = bytes_object.decode("ASCII")
print(ascii_string)