Open_basedir绕过一.基础知识open_basedir是php.ini中的一个配置选项,它可将用户访问文件的活动范围限制在指定的区域, 假设open_basedir=/home/wwwroot/home/web1/:/tmp/,那么通过web1访问服务器的 用户就无法获取服务器上除了/home/wwwroot/home/web1/和/tmp/这两个目录以外的文件。 注意用open_basedir指定的...
open_basedir本来作为php限制跨目录读写文件的最基础的方式,应该需要进行完好的设计。但可能php在当初编写代码的时候并没有进行一个统一的设计,导致每当新增加功能或遇到一些偏僻的函数的时候,都会出现类似“open_basedir绕过”等悲剧。 我曾经写过一篇文章,《lnmp虚拟主机安全配置研究》,中讲述了一个防止虚拟主机跨目录...
先“采用手段”得到目录后,利用如下uaf脚本绕过。 <?php function ctfshow($cmd) { global $abc, $helper, $backtrace; class Vuln { public $a; public function __destruct() { global $backtrace; unset($this->a); $backtrace = (new Exception)->getTrace(); if(!isset($backtrace[1]['args'])...
执行1.php之后 成功通过命令执行函数绕过open_basedir来删除文件。 由于命令执行函数一般都会被限制在disable_function当中,所以我们需要寻找其他的途径来绕过限制。 0x02 symlink()函数 我们先来了解一下symlink函数 boolsymlink(string $target,string $link) symlink函数将建立一个指向target的名为link的符号链接,当然一...
成功通过命令执行函数绕过open_basedir来删除文件。 由于命令执行函数一般都会被限制在disable_function当中,所以我们需要寻找其他的途径来绕过限制。 0x02 symlink()函数 我们先来了解一下symlink函数 bool symlink ( string $target , string $link ) symlink函数将建立一个指向target的名为link的符号链接,当然一般情况...
如何利用PHP-FPM实现open_basedir绕过 0X00 安装模式 在PHP中有以下几种常见的安装模式: 1. CGI模式 CGI是通用网关接口,HTTP服务器使用这样的接口程序来调用外部程序,外部程序可以使用任何计算机语言来编写,例如C,C++,Perl,Visual Basic,Shell等等,历史上用来编写CGI程序使用最广泛的是Perl语言。
以SUCTF2019中的一道题为例easyphp,在获得webshell以后,发现有disable_functions的限制,这里可以通过与php-fpm进行通信来绕过open_basedir。 这里想要获得flag需要利用php_value对open_basedir的值进行重设 'PHP_VALUE': 'auto_prepend_file = php://input'+chr(0x0A)+'open_basedir = /', ...
以SUCTF2019中的一道题为例easyphp,在获得webshell以后,发现有disable_functions的限制,这里可以通过与php-fpm进行通信来绕过open_basedir。 这里想要获得flag需要利用php_value对open_basedir的值进行重设 'PHP_VALUE': 'auto_prepend_file = php://input'+chr(0x0A)+'open_basedir = /', ...
姿势最骚的——利用ini_set()绕过 ini_set()ini_set()用来设置php.ini的值,在函数执行的时候生效,脚本结束后,设置失效。无需打开php.ini文件,就能修改配置。函数用法如下:ini_set ( string $varname , string $newvalue ) : string POC <?phphighlight_file(__FILE__);mkdir('Andy'); //创建...
PHP绕过open_basedir限制操作文件的方法 PHP绕过open_basedir限制操作⽂件的⽅法 0x00 预备知识 关于open_basedir open_basedir是php.ini中的⼀个配置选项 它可将⽤户访问⽂件的活动范围限制在指定的区域,假设open_basedir=/home/wwwroot/home/web1/:/tmp/,那么通过web1访问服务器的⽤户就⽆法获取...