Principe:
Un simple buffer overflow nécessitant de rediriger l'addresse vers un emplacement spécifique du programme, pour obtenir un shell. Envoyer correctement le payload fut le plus compliqué
Infos (cf menu latéral):
🚩 Flaggué! +20 points gagnés —
💾 Téléchargez les fichiers du challenge
FCSC{5f25ae8fd59160b018e8ef21ff8972cdb2e3ab98e4f7bfced4e60255d378aee8}
Prise en main
Le Débuggeur
edb, on recommence le même test
Tester à la main
msfvenom_pattern-create
RTN (return assembleur)
4011a2
Il faut prendre garde à l'endian de la stack: la valeur à entrer à la main sera en fait a2 11 40 00 00 00 00 00
Le payload réel
J'ai perdu des plombes là dessus, à ne pas comprendre pourquoi ce payload ne marche pas…
mkfifo
mkfifo (named pipe), le problème ne se pose plus, et le shell se lance… mais celui-ci se ferme immédiatement!Le désespoir avec PHP
pwn pour lui envoyer le payload!
cat|pwn (pour que stdin reste ouvert et accessible) et ça marche!Le flag
On peut se contenter d'un cat|./pwn et d'utiliser ps -aux|grep 'pwn' dans un autre terminal pour trouver le PID du process pwn. On lui envoie alors les données vers stdin via la commande cat binshell.dat > /proc/PID/fd/0
Le PHP script fait cela automatiquement
Flag: FCSC{5f25ae8fd59160b018e8ef21ff8972cdb2e3ab98e4f7bfced4e60255d378aee8}