攻防世界web高手进阶之blgdel

攻防世界web高手进阶之blgdel

  • 打开页面

在这里插入图片描述

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

在这里插入图片描述

  • 发现几个目录可能有线索
    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');

?>

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

在这里插入图片描述

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

在这里插入图片描述
看到有文件上传,试着上传一句马,积分达到100分才可上传文件,通过刷推荐人达到,上传后,访问uploads路径下上传的文件
在这里插入图片描述

在这里插入图片描述
发现代码被过滤,查看config.txt,上传的文件内容过滤了<等符号
看了dalao的wp,说是这里可以上传.htaccess文件,用.htaccess修改配置文件
.htaccess相关介绍,在这里
链接:
https://www.cnblogs.com/adforce/archive/2012/11/23/2784664.html
https://blog.youkuaiyun.com/cmzhuang/article/details/53537591

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

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

在这里插入图片描述
查到flag文件名

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

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

在这里插入图片描述
拿到flag:cyberpeace{1b39ac65b450f1a0b22e5b073c851347}

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

结束语

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

作者:花城

### 关于Web Cookie的安全性与防护措施 #### Session Cookie 和 Persistent Cookie 的区别 Session cookie 针对某一次会话而言,会话结束 session cookie 就随之消失;而 persistent cookie 存在于客户端硬盘上的一段文本(通常是加密的),并且可能长期存在。由于持久化存储的特点,persistent cookie 更容易遭受攻击,如cookie欺骗以及针对cookie的跨站脚本攻击,因此相较于session cookie来说安全性较低[^1]。 #### 设置安全的Cookie属性 为了提高Cookie的安全性,可以通过设置特定属性来增强保护机制: - **HttpOnly 属性**:当设置了此属性后,浏览器将阻止JavaScript访问这些Cookies,从而降低了XSS攻击中窃取用户凭证的风险。 - **Secure 属性**:确保只有在HTTPS连接下才会发送该Cookie,防止在网络监听的情况下泄露敏感信息。 例如,在PHP环境中可以这样配置: ```php setcookie('username', 'user', time() + 3600, '/', '', true, true); ``` 这段代码创建了一个名为`username`的Cookie,并启用了`Secure`和`HttpOnly`选项[^2][^3]。 #### CSRF 攻击防范 除了上述提到的方法外,还需要考虑如何抵御CSRF(Cross-Site Request Forgery)攻击。一种有效的策略是在表单提交过程中加入一次性令牌(Token),并由服务端验证其有效性。此外,还可以利用现代浏览器支持的新特性——SameSite属性,它能够控制第三方网站发起请求时是否携带当前站点的Cookie[^4]。 综上所述,通过合理运用以上几种技术手段,可以在很大程度上提升Web应用程序中使用的Cookie的整体安全性水平。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值