Jump to content

Todos os ficheiro .qualquercoisa


RicardoR

Recommended Posts

Desculpem de não ter posto o código  ?

<?php 

$dir = "/home/a6483987/public_html/nc";

$sub = ($_GET['dir']);
$path = '/home/a6483987/public_html/nc';
$path = $path . "$sub";
$dh = opendir($path);
while (($file = readdir($dh)) !== false) {
    if($file != "." && $file != "..") {
            if (substr($file, -4, -3) =="."){
           $ler_texto=fopen($file,"r");
	   while(($a=fgets($ler_texto,1000)) !=false){
	   echo $a ;
	   }
	   fclose($ler_texto);
            }else{            
        echo " <a href='?dir=$sub/$file'><font face=candara color=#CCCCCC>$file</font></a><br />";
          }
    }
}
closedir($dh);
?>

Não está a dar com os seguintes erros :

Warning: fopen(ola.txt) [function.fopen]: failed to open stream: No such file or directory in /home/a6483987/public_html/nc.php on line 20

Warning: fgets(): supplied argument is not a valid stream resource in /home/a6483987/public_html/nc.php on line 21

Warning: fclose(): supplied argument is not a valid stream resource in /home/a6483987/public_html/nc.php on line 24

Link to comment
Share on other sites

Como o quê? Explorar? Dá uma olhada ao percuso do valor do $_GET['dir'], basta usar paths relativos que vou onde quiser.

Mas ele está a fazer isto: $path = $path . "$sub"; E o $path já tem valor: $path = '/home/a6483987/public_html/nc'; Assim só podes andar para a frente e não para trás, e ao andar para frente se calhar é o que ele quer e não tem la nada que tu não possas ver... Ou então não estou a perceber.

Link to comment
Share on other sites

Mas ele está a fazer isto: $path = $path . "$sub"; E o $path já tem valor: $path = '/home/a6483987/public_html/nc'; Assim só podes andar para a frente e não para trás, e ao andar para frente se calhar é o que ele quer e não tem la nada que tu não possas ver... Ou então não estou a perceber.

Teres /home/lulz/ ou /home/lulz/oi/../../ é a mesma coisa.

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other sites

parece-me bastante obvio

onde tens

$path = $path."$sub"

deveria estar

//aqui insere código que verifique se a string que vem  GET é segura
$path = $path.$sub

sobre segurança bastava por no link da pagina algo como "index.php?dir=../../.." e andava logo 3 pastas para traz (confirmas djthyrax?)

O que não tem solução, solucionado esta...

Link to comment
Share on other sites

O facto de ele ter "$sub" não muda nada, não há aí erro algum.

sobre segurança bastava por no link da pagina algo como "index.php?dir=../../.." e andava logo 3 pastas para traz (confirmas djthyrax?)

Sim.

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other sites

Eu só não sabia era que fazer "/home/lulz/oi/../../abc/php/" era relamente fazer "/home/abc/php/" o que me parece mais lógico, mas segundo o exemplo que deste lá em cima djthyrax, ficaria mais "/home/lulz/abc/php/". Eu só não sabia que isto era possível. Acho que tudo o que programei até hoje tem falhas de segurança atão :X

Link to comment
Share on other sites

Todos os endereços para ficheiros devem ter:

$path = str_replace(array('/', '\'), '', $path);

Desta forma eliminas todas as possibilidades de navegação 🙂

«

Esqueceste-te de escapar a \ 👍 Mas sim, é isso. 😄

Não peças ajuda por PM! A tua dúvida vai ter menos atenção do que se for postada na secção correcta do fórum!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.