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