Utilisation du script client.py
:
python client.py
[+] Opening connection to localhost on port 4000: Done
b'You said HELLO\n'
[*] Closed connection to localhost port 4000
HELLO
==.... . .-.. .-.. ---
==signal.iq
==hello_signal
L’analyse “visuelle” (hexedit signal.iq
) montre clairement le motif .... . .-.. .-.. ---
:
- un point correspond à une répétition (48 fois) de
00 00 80 3F
- un tiret vaut à 5 points
- les points/tirés sont liés par 192 octets nuls
- les lettres sont séparées par 960 octets nuls
et d’après la description, les mots sont séparés par un espace correspondant à 4 séparateurs
p = 48 * b'\x00\x00\x80?'
t = 5 * p
l = 192 * b'\x00'
s = 5 * l
e = 4 * s
reconstruction et envoi du message CAN I GET THE FLAG
:
C = t+l+p+l+t+l+p
A = p+l+t
N = t+l+p
I = p+l+p
G = t+l+t+l+p
E = p
T = t
H = p+l+p+l+p+l+p
F = p+l+p+l+t+l+p
L = p+l+t+l+p+l+p
CAN_I_GET_THE_FLAG = (C+s+A+s+N)+e+(I)+e+(G+s+E+s+T)+e+(T+s+H+s+E)+e+(F+s+L+s+A+s+G)
from base64 import b64encode
FLAG = b64encode(CAN_I_GET_THE_FLAG)
from pwn import remote
io = remote('127.0.0.1', 4000)
io.recvuntil(b"> ")
io.sendline(FLAG)
print(io.recvline())
io.close()