攻防世界web高手进阶之blgdel

目录

  • 打开页面

攻防世界web高手进阶之blgdel

  • 查看页面后,常规操作~扫一下目录

攻防世界web高手进阶之blgdel

  • 发现几个目录可能有线索
    robots.txt

攻防世界web高手进阶之blgdel
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');

?>

还有sql.txt 数据库的一些信息

攻防世界web高手进阶之blgdel

  • 注册登录后,访问user.php

攻防世界web高手进阶之blgdel
看到有文件上传,试着上传一句马,积分达到100分才可上传文件,通过刷推荐人达到,上传后,访问uploads路径下上传的文件
攻防世界web高手进阶之blgdel

攻防世界web高手进阶之blgdel
发现代码被过滤,查看config.txt,上传的文件内容过滤了<等符号
看了dalao的wp,说是这里可以上传.htaccess文件,用.htaccess修改配置文件
.htaccess相关介绍,在这里
链接:
https://www.cnblogs.com/adforce/archive/2012/11/23/2784664.html
https://blog.csdn.net/cmzhuang/article/details/53537591

  • 第一步,通过构造master伪协议来搜索flag
php_value auto_append_file master://search/path=%2fhome%2f&name=flag

wp说的要把正斜杠编码%2f传入才行,原因未知
写入.htaccess文件后上传,在上传随便一个php文件,这样访问php文件时就会执行

攻防世界web高手进阶之blgdel
查到flag文件名

  • 第二步,再修改.htaccess内容,包含文件名
php_value auto_append_file /home/hiahiahia_flag

再次上传.htaccess文件,访问php

攻防世界web高手进阶之blgdel
拿到flag:cyberpeace{1b39ac65b450f1a0b22e5b073c851347}

知识点:
1.代码审计
2.文件包含
3.htaccess

结束语

自信至上 禁止低头 我心里有一簇迎着烈阳而生的花

作者:花城

上一篇:【文件上传绕过】——解析漏洞_.htaccess文件解析漏洞


下一篇:[BUUCTF题解][XNUCA2019Qualifier]EasyPHP 1