PHP Unserialization 35c3ctf4 min read

Bentornati su Exploitnetworking! Oggi vedremo un writeup interessante su una challenge del ctf 35c3ctf che utilizza la deserializzazione di php, ottenendo quindi una object injection. La challenge ci offriva il codice vulnerabile in php:

Copy to Clipboard

Dal codice si può facilmente vedere che per ottenere la flag bisogna triggherare la funzione __destruct. Ricordiamo che tale funzione viene chiamata automaticamente alla fine dello script php oppure durante una normale distruzione dell’oggetto che può avvenire ad esempio in seguito ad un errore, ed è stata proprio questa la mia idea per ottenere la flag!

Ho creato un semplice script in php che mi serializza un array:

Copy to Clipboard

che in output mi ha dato il seguente risultato:

Copy to Clipboard

L’unserialize prenderà questo array e lo deserializzerà in modo sequenziale: prima l’indice 0, poi l’indice 1 fino all’indice 4. Se proviamo a togliere l’ultimo punto e virgola farà la stessa cosa ma quando arriverà alla fine andrà in errore poiché non ci sarà il punto e virgola che fa parte della sintassi, mandando in errore l’unserialize e distruggendo tutto quello deserializzato fino in quel momento, compreso l’oggetto della classe B, triggherando così il metodo __destruct:

Copy to Clipboard
  • Se sei interessato ad approfondire la sicurezza sul web ti consigliamo questo libro 🙂

Recent Tweets

For privacy reasons Twitter needs your permission to be loaded.
I Accept
2018-12-29T17:06:20+00:00

About the Author:

Dottore in Informatica. Da sempre appassionato di Linux, reti informatiche, sicurezza e, in modo amatoriale, all’elettronica. Il mio intento è quello di trasmettere le mie conoscenze ad altri appassionati.

Leave A Comment

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.