首先尝试了一下sql注入,但是没有找到不同回显。直接用sqlmap扫描一下,因为这边用的是POST请求,所以需要抓包将请求复制到txt文件中然后使用命令sqlmap -p bp.txt。也没有发现注入漏洞。

再进行目录扫描试试:

[02:33:43] 403 -  337B  - /.httr-oauth
[02:36:39] 403 -  333B  - /public/

  • /.httr-oauth 是 R 语言 OAuth 授权的敏感配置文件,服务器禁止外部访问是正常的安全措施。

  • /public/ 是公开静态资源目录,文件本身应可访问,403 错误可能由权限配置问题导致,需检查文件权限或服务器规则。

都没有访问权限。完全没有思路了...

看了一眼答案居然是需要用字典扫描网页备份文件,为什么dirsearch不能扫描出来呢?

<?phpob_start();function get_hash(){$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()+-';$random = $chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)];//Random 5 times$content = uniqid().$random;return sha1($content); }header("Content-Type: text/html;charset=utf-8");***if(isset($_POST['username']) and $_POST['username'] != '' ){$admin = '6d0bc1';if ( $admin == substr(md5($_POST['password']),0,6)) {echo "<script>alert('[+] Welcome to manage system')</script>";$file_shtml = "public/".get_hash().".shtml";$shtml = fopen($file_shtml, "w") or die("Unable to open file!");$text = '******<h1>Hello,'.$_POST['username'].'</h1>******';fwrite($shtml,$text);fclose($shtml);***echo "[!] Header  error ...";} else {echo "<script>alert('[!] Failed')</script>";}else{***}***
?>

 $admin = '6d0bc1';
        if ( $admin == substr(md5($_POST['password']),0,6))

需满足该条件,就得找到某字符串的md5编码前六位是6d0bc1,这里参考[BJDCTF2020]EasySearch (SSI注入漏洞)-CSDN博客的脚本:

import hashlibdef generate_md5(prefix):count = 0while True:data = prefix + str(count)md5_hash = hashlib.md5(data.encode()).hexdigest()if md5_hash.startswith(prefix):return md5_hash, datacount += 1prefix = input("请输入六个字符的前缀:")
md5_hash, data = generate_md5(prefix)
print("MD5值:", md5_hash)
print("加密前的数据:", data)

然后会将 <h1>Hello,'.$_POST['username'].'</h1>写入文件"public/".get_hash().".shtml"中。应该是需要植入木马,但是这里有两个问题:

1、文件名是通过代码shal1(uniqid().$random)生成的,其中$random是五位随机字符串,怎么得到文件名呢?

2、写入的是shtml文件,并不能植入php一句话木马,应该植入什么呢?

第一个问题:文件名具有高随机性,无法破解,所以题目肯定有其他提示。通过抓包可以看到响应中有提示Url_Is_Here: public/e96cae9e326466c68fa54d20e06936b5dc8deb25.shtml

第二个问题:从源码中我们可以看到,后端直接将用户输入放入shtml文件中,存在SSI注入漏洞。

SSI(Server-Side Includes,服务器端包含)注入漏洞是一种因服务器未正确过滤用户输入中的 SSI 指令,导致攻击者可注入恶意 SSI 代码并被服务器执行的安全漏洞。它主要影响启用了 SSI 功能的 Web 服务器,攻击者通过构造恶意请求,可实现文件读取、命令执行、服务器信息泄露等危害。

一、SSI 技术基础

SSI 是一种简单的服务器端脚本技术,允许在 HTML 页面中嵌入动态指令,服务器在解析页面时会执行这些指令并将结果替换到页面中。其核心作用是实现页面模块化(如复用导航栏、页眉页脚)或动态内容生成(如显示当前时间、服务器信息)。

 

常见的 SSI 指令格式如下:

 

html

<!--#指令 参数="值" -->

 

例如:

 
  • 显示服务器当前时间:<!--#echo var="DATE_LOCAL" -->
  • 包含其他文件内容:<!--#include file="header.html" -->
  • 执行系统命令(部分服务器支持):<!--#exec cmd="ls" -->

二、SSI 注入漏洞的成因

SSI 注入漏洞的根本原因是服务器对用户可控输入(如表单提交、URL 参数、Cookie 等)未进行严格过滤或转义,导致攻击者可将恶意 SSI 指令注入到网页中,且服务器会执行这些指令。

 

具体场景包括:

 
  1. 用户输入直接嵌入页面:例如网站允许用户提交评论、留言等内容,且未过滤<--#等 SSI 指令特征,导致恶意指令被写入页面并被服务器执行。
  2. 文件上传漏洞结合 SSI:攻击者上传包含 SSI 指令的文件(如.shtml.html),若服务器允许该文件被解析为 SSI 页面,则指令会被执行。
  3. 动态页面生成缺陷:服务器在动态生成页面时,将用户输入直接拼接进 HTML,且未处理 SSI 特殊语法,导致注入。

三、漏洞危害

SSI 注入的危害程度取决于服务器配置的 SSI 权限,可能包括:

 
  1. 信息泄露
    通过<!--#echo var="VAR_NAME" -->指令获取服务器环境变量(如操作系统版本、Web 服务器类型、用户权限等)。
    例如:<!--#echo var="HTTP_USER_AGENT" -->(获取浏览器信息)、<!--#echo var="SERVER_SOFTWARE" -->(获取服务器软件版本)。

  2. 文件读取
    通过<!--#include file="文件路径" -->指令读取服务器上的敏感文件(如配置文件、密码文件、日志文件等)。
    例如:<!--#include file="/etc/passwd" -->(读取 Linux 用户列表)、<!--#include file="../config.php" -->(读取网站配置)。

  3. 远程命令执行
    若服务器启用了exec等危险 SSI 指令(如 Apache 的Options +IncludesNOEXEC配置被禁用),攻击者可直接执行系统命令。
    例如:<!--#exec cmd="whoami" -->(查看当前用户)、<!--#exec cmd="rm -rf /tmp/*" -->(删除文件),甚至反弹 shell 控制服务器。

  4. 页面篡改
    通过注入指令修改页面内容,误导用户或传播恶意信息。

感觉和模板注入很像。

这里我们直接注入命令执行,令$_POST['username']=<!--#exec cmd="ls /" -->

不在根目录中,那就从当前工作目录开始一级一级向上访问。

更简便的是使用"find / -name "*flag*""命令,但是这里我试了没成功,不知道为什么,有可能是靶机用的轻量级linux系统没有find命令。

在上级目录中我们能找到有flag_990c66bf85a09c664f0b6741840499b2文件。

总结一下:1、源码泄露,这道题内容极少,没有任何线索,那么大概率是需要获得源码的,使用dirsearch扫描没什么发现,需要进一步用bp扫描备份文件。2、一个特殊的md5绕过,我们可以通过脚本构造一个字符串,使其md5编码带有特定前缀。3、基础的SSI注入,原理和其他注入漏洞类似,将用户的输入直接放入可执行文件,这里是shtml文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/917337.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/917337.shtml
英文地址,请注明出处:http://en.pswp.cn/news/917337.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】基本指令的使用 and 面试常问

1、man 指令使用方法&#xff1a;man Linux指令。功能&#xff1a;相当于字典&#xff0c;查找指令的用法。常用选项&#xff1a;-k&#xff1a;根据关键字搜索联机帮助。num&#xff1a;只在第num章节查找。-a&#xff1a;将所有章节的都显示出来&#xff0c;比如man printf它…

零基础 “入坑” Java--- 十六、字符串String 异常

文章目录一、String1.字符串的不可变性2.字符串的修改3.StringBuilder和StringBuffer4.【字符串练习】4.1 字符串中的第一个唯一字符4.2 字符串最后一个单词的长度4.3 验证回文串二、异常1.初识异常2.异常的分类3.异常的处理4.异常处理流程总结5.自定义异常在上一章节中&#x…

梯度下降在大模型训练中的作用与实现

梯度下降&#xff08;Gradient Descent&#xff09;是深度学习中最核心的优化算法之一。大模型&#xff08;如GPT、BERT&#xff09;在训练时需要优化数十亿甚至上千亿的参数&#xff0c;而梯度下降及其变体&#xff08;如SGD、Adam&#xff09;正是实现这一优化的关键工具。它…

【JVS更新日志】开源框架、APS排产、企业计划、物联网、逻辑引擎7.30更新说明!

项目介绍 JVS是企业级数字化服务构建的基础脚手架&#xff0c;主要解决企业信息化项目交付难、实施效率低、开发成本高的问题&#xff0c;采用微服务配置化的方式&#xff0c;提供了低代码数据分析物联网的核心能力产品&#xff0c;并构建了协同办公、企业常用的管理工具等&…

Eclipse中导入新项目,右键项目没有Run on Server,Tomcat的add and remove找不到项目

原因分析没有勾选Dynamic Web Module、Java、JavaScriptDynamic Web Module版本问题解决方法Eclipse中右键项目选择Properties左侧点击project facets勾选Dynamic Web Module、Java、JavaScript&#xff0c;注意Dynamic Web Module版本问题,要和tomcat版本对应。- Dynamic Web …

IntelliJ IDEA 2025系列通用软件安装教程(Windows版)

前言 JetBrains系列开发工具&#xff08;如IntelliJ IDEA、PyCharm、WebStorm等&#xff09;是程序员们非常喜爱的集成开发环境。2025年最新版本带来了更多强大的功能和改进。本教程将详细介绍如何在Windows系统上安装JetBrains 2025系列软件。 最近挖到一个宝藏级人工智能学习…

乌鸫科技前端二面

1. 你能给我介绍一下你参与的重要项目&#xff0c;并重点介绍一下做的内容?通俗解释&#xff1a; 挑一个你觉得最拿得出手、技术含量最高的项目&#xff0c;说说这个项目是干什么的&#xff08;比如一个电商网站、一个后台管理系统&#xff09;&#xff0c;你在里面具体负责了…

《c++面向对象入门与实战》笔记

前年的书&#xff0c;翻出来整理一下7章.指针指针 sizeof为4*指针 sizeof为 所指类型的sizeof注意free后置空&#xff0c;避免野指针11章.类

easyExcel生成多个sheet的动态表头的实现

在使用 EasyExcel 实现“多个 Sheet 且每个 Sheet 表头是动态的”需求时&#xff0c;思路如下&#xff1a;✅ 实现思路概述 EasyExcel 的 ExcelWriter 支持多个 Sheet 写入。每个 Sheet&#xff1a; 使用 WriteSheet 创建&#xff1b;可以绑定一个动态生成的表头 List<List&…

SQL 连接类型示例:内连接与外连接

SQL 连接类型示例&#xff1a;内连接与外连接 示例数据表 假设我们有两个表&#xff1a; employees 表:emp_idemp_namedept_id1张三1012李四1023王五1034赵六NULLdepartments 表:dept_iddept_name101销售部102技术部104财务部1. 内连接 (INNER JOIN) 内连接只返回两个表中匹配的…

Ubuntu安装gpu驱动,cuda

系统初始化 1、安装基础软件 apt-get update apt-get -y install openssh-server openssh-client apt-utils freeipmi ipmitool sshpass ethtool zip unzip nano less git netplan.io iputils-ping mtr ipvsadm smartmontools python3-pip socat conntrack libvirt-clients li…

ctfshow_源码压缩包泄露

根据题目信息直接dirsearch解压下来一个.txt文件&#xff0c;一个index.phpflag{flag_here}不对那么就去看index.php也没有东西&#xff0c;于是查看wp发现是访问/fl000g.txt这才是对的还有很多源码泄露需要去了解• git源码泄露• svn源码泄露• DS_Store 文件泄露• 网站备份…

Python 程序设计讲义(54):Python 的函数——函数概述

Python 程序设计讲义&#xff08;54&#xff09;&#xff1a;Python 的函数——函数概述 目录Python 程序设计讲义&#xff08;54&#xff09;&#xff1a;Python 的函数——函数概述一、函数的类型1、内置函数2、自定义函数二、调用函数Python 提供了函数机制&#xff0c;把实…

学习Python中Selenium模块的基本用法(3:下载浏览器驱动续)

前一篇文章主要介绍下载针对火狐浏览器的WebDriver&#xff0c;写那篇文章时才找到能够下最新版本Chrome的WebDriver地址&#xff08;参考文献6&#xff09;&#xff0c;本文继续学习并验证针对Chrome浏览器的WebDriver下载和使用方法。Chrome的WebDriver版本与操作系统相关&am…

AIDL当Parcelable序列化的数据类通信时报“Class not found when unmarshalling“找不到该类时的解决方案

1. 报错栈 &#xff1a;cusText这个类找不到 2 16:01:29.796 1044 5718 E Parcel : Class not found when unmarshalling: com.cus.sdk.cusText 08-02 16:01:29.796 1044 5718 E Parcel : java.lang.ClassNotFoundException: com.cus.sdk.cusText 08-02 16:01:29.796 1…

Django模型查询与性能调优:告别N+1问题

文章目录一、查询基础QuerySet 详解一对多关联查询多对多关联查询二、N1查询问题问题分析检测方法解决方案三、高级查询优化values()values_list()values()和values_list()对比Q() 对象复杂查询查看生成的 SQL四、项目实战场景实战一、查询基础 QuerySet 详解 Django 中通过模…

PyTorch 中 Tensor 统计学函数及相关概念

文章目录PyTorch 中 Tensor 统计学函数及相关概念一、引言二、基础统计学函数&#xff08;一&#xff09;torch.mean()——均值计算&#xff08;二&#xff09;torch.sum()——总和计算&#xff08;三&#xff09;torch.prod()——元素积计算&#xff08;四&#xff09;torch.m…

浅拷贝与深拷贝的区别

浅拷贝和深拷贝是两种不同的对象复制方式&#xff0c;主要区别在于它们如何处理对象内部的引用类型字段。浅拷贝 (Shallow Copy)特点&#xff1a;只复制对象本身&#xff08;基本类型字段&#xff09;和对象中的引用&#xff08;地址&#xff09;不复制引用指向的实际对象原始对…

脚本统计MongoDB集合表数据量

脚本&#xff1a; #!/bin/bashipxxx.xx.xx.xx portxxxx dbxxxdb #user #passwmongo -host ${ip}:${port} <<EOF 2>/dev/null|grep -vE version|not match|session|compressors||Warning|delivers|upcoming|installation|https|switched|bye >collec use ${db}; sho…

图漾AGV行业常用相机使用文档

文章目录1.图漾相机设置IP1.1 前期准备2.FM851-E2相机2.1 FM851-E2适用场景2.2 FM851-E2 IO线和数据线定义2.2.1 IO接口定义2.2.2 数据接口线2.2.3 相机正面安装方向2.2.4 相机IO指示灯2.3 FM851-E2/FM855-E2-7相机RGB颜色异常【解决措施1】&#xff1a;【解决措施2】&#xff…