jeanne-dhack-2026

PWN - intro - Sum Service

2026-01-30easy#pwn#perl#code-injection#eval

On nous donne un service Perl qui effectue une somme avec l'entier fourni en entrée.

Analyse du code

while (1) { print "Enter a number to sum with 42: "; my $string = <STDIN>; chomp $string; my $result = eval "42 + " . $string; print "Result: " . $result . "\n"; }

La vulnérabilité est évidente : l'input utilisateur est directement concaténé dans un eval sans aucune sanitisation. Le programme construit la chaîne "42 + <notre_input>" et l'exécute comme du code Perl.

De plus, le flag est lu en mémoire au démarrage :

open(my $fh, '<', "flag.txt"); my $flag = <$fh>; close($fh);

La variable $flag est donc accessible dans le scope de l'eval.

Exploitation

Il suffit d'injecter du code Perl après un ; pour sortir de l'expression arithmétique :

1; print $flag

Le programme évalue alors 42 + 1; print $flag, affichant le contenu du flag.