Non riesco a capire come bypassare questa funzione per lfi

1

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?

    
posta onizukaek 29.12.2016 - 23:49
fonte

1 risposta

3

Di solito sarà il percorso, seguito da null byte per terminare la stringa quando Esegue il codice C che recupera effettivamente il file :

http://example.com/challenge27/?page=../../../../etc/passwd%00

Nota che i caratteri null byte non funzionano nelle versioni aggiornate di PHP.

L'altra sfida è ottenere .. dopo il filtro.

Prova questi per vedere se possono ignorare questo controllo:

  • Prova a utilizzare la codifica Unicode a 16 bit ( . = %u002e ).
  • Prova la doppia codifica dell'URL ( . =% 252e).
  • Prova a prolungare la codifica Unicode UTF-8 ( . può essere %c0%2e , %e0%40%ae , %c0ae )
risposta data 30.12.2016 - 10:10
fonte

Leggi altre domande sui tag