Attualmente sto facendo un po 'di pratica sulla sicurezza e affrontando le sfide fornite in un sito web. Uno di loro parla di LFI e ho capito cosa fare, ma non ho idea di come farlo, quindi ti mostriamo il problema:
Ecco l'URL da hackerare:
http://example.com/challenge27/?page=contact
Mi viene chiesto di ottenere la password in /etc/passwd
, quindi la prima idea che viene è provare alcune directory trasversali:
http://example.com/challenge27/?page=.
Questo genera un'eccezione:
Warning: assert(): Assertion "strpos('includes/..php', '..') === false" failed
Ciò che è ovvio è che strpos
rileva ogni occorrenza di '..'
nel percorso e l'asserzione controlla che questa funzione restituisca un valore falso
Poi provo aggiungendo un byte null alla fine dello stesso url
http://example.com/challenge27/?page=.%00
che mi dà un altro suggerimento:
Warning: file_exists() expects parameter 1 to be a valid path
Ma qui sono bloccato, il mio obiettivo è iniettare il percorso a /etc/passwd
come questo:
http://example.com/challenge27/?page=../../../../etc/passwd
Mi sento come se potessi sfruttare la soluzione null byte ma dopo aver provato molti URL diversi ho ricevuto l'avvertimento file_exists () o quello assert (), ora sto esaurendo le idee, qualcuno ha un altro suggerimento per dare?