[GXYCTF2019]禁止套娃1

news2024/11/26 17:45:48

提示

  1. git泄露
  2. 无参数rce

!!注意需要python3环境

github里dirsearch工具下载位置     ###可能需要开节点才能打开

百度网盘dirsearch下载地址           ###如果github里下载不了可以在网盘下载

提取码sx5d

只给了flag在哪里呢,那么应该就是要让信息收集了

对于我来说做ctf web题我有我自己的信息搜集三件套

  1. 抓包发包查看
  2. 目录扫描
  3. 查看页面源代码

这里在目录扫描的时候发现了git泄露

就像是下面图片方框里的,直接通过浏览器访问可直接下载,说明存在git泄露

这里我使用的是dirsearch来进行扫描的,每次扫buuctf的题时扫描速度太快他会一直报错429,就像下图箭头指向的一样,所以无论使用什么工具去扫描都得限速以及限制每次扫描时间

dirsearch    -u   网站url   -t    每秒扫描多少个     -s    每隔多少秒扫一次

如果想了解更多可以去看这位博主的博客dirsearch使用教程_dirsearch用法-CSDN博客

这里直接用githack把git泄露的源码扒下来

现在开始代码审计

  1. 首先过滤了伪协议我们不能通过伪协议注入后门了
  2. 将传入的字母以及符号替换为空以后如果有;则进入(#这里就已经限定了我们的格式只能是a(b(c()))这样的格式,如果将这些替换为空了还有其他东西比如“;;这样的就不匹配;)
  3. 不能有/et|na|info|dec|bin|hex|oct|pi|log/并且有/i匹配大小写所以不能大小写绕过

所以整体作者想要的思路应该是无参数rce

<?php
include "flag.php";
echo "flag在哪里呢?<br>";
if(isset($_GET['exp'])){
    if (!preg_match('/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i', $_GET['exp'])) {
        if(';' === preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'])) {
            if (!preg_match('/et|na|info|dec|bin|hex|oct|pi|log/i', $_GET['exp'])) {
                // echo $_GET['exp'];
                @eval($_GET['exp']);
            }
            else{
                die("还差一点哦!");
            }
        }
        else{
            die("再好好想想!");
        }
    }
    else{
        die("还想读flag,臭弟弟!");
    }
}
// highlight_file(__FILE__);
?>

首先先来了解两个php函数

getallheaders()

返回所有http头信息,但是他返回的是数组状态的信息,然而它返回的信息需要给eval()来处理,但是eval()只能处理字符串类的信息

implode()

所以这里就要用到这个函数了,这个函数可以直接把getallheaders()返回的数组转换成字符串

这里先使用读取session的方式来做一次(###拓展###最后补充了一个做法,不过没有匹配et的话就可以使用)

  1. 一般php需要启动session才能使用,启动session使用函数session_start()
  2. session是存储在本地的和cookie同理的东西所以我们对于没有做防护的sesseion是可控的
  3. 通过函数session_id()函数来

    session_id() 可以用来获取/设置 当前会话 ID。

    为了能够将会话 ID 很方便的附加到 URL 之后, 你可以使用常量 SID 获取以字符串格式表达的会话名称和 ID

  4. 最后通过highlight_file()来高亮显示文件

最后payload:  highlight_file(session_id(session_start()));

拓展

payload:implode(getallheaders())

发包的同时抓包

这里随便加一个head头,他的值用来执行命令,最后加了\\来注释后面的内容

####有可能php版本不同输出顺序也不同,可以先尝试是从下至上输出还是从上至下输出

这里是从下往上读的,所以夹\\注释掉后面读取的上面的head头信息

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电子学会C/C++编程等级考试2021年09月(五级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:抓牛 农夫知道一头牛的位置,想要抓住它。农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000)。农夫有两种移动方式: 1、从X移动到X-1或X+1,每次移动花费一分钟 2、从X移动到2*X,每…

Axios 拦截器实战教程:简单易懂

Axios 提供了一种称为 “拦截器&#xff08;interceptors&#xff09;” 的功能&#xff0c;使我们能够在请求或响应被发送或处理之前对它们进行全局处理。拦截器为我们提供了一种简洁而强大的方式来转换请求和响应、进行错误处理、添加认证信息等操作。在本文中&#xff0c;我…

案例063:基于微信小程序的传染病防控宣传系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder …

如何进行更好的面试回复之缓存函数在项目中的性能优化?

缓存函数是一种提高函数性能的技术&#xff0c;在函数被调用时&#xff0c;会将计算结果缓存起来&#xff0c;以便在后续的调用中直接返回缓存的结果&#xff0c;从而减少了重复计算的时间。 缓存函数的实现通常包括两个步骤&#xff1a; 判断缓存是否存在&#xff1a;在函数被…

Mysql 命令行导出SQL文件和导入文件

1-导出SQL文件 要导出 MySQL 数据库到一个 SQL 文件&#xff0c;你可以使用 mysqldump 工具&#xff0c;它是 MySQL 的一个命令行工具&#xff0c;以下是一些步骤&#xff1a; 打开终端&#xff0c;并使用以下命令来执行导出操作&#xff1a; mysqldump -u wqzbxh -h 1.137.15…

DAP数据集成与算法模型如何结合使用

企业信息化建设会越来越完善&#xff0c;越来越体系化&#xff0c;当今数据时代背景下更加强调、重视数据的价值&#xff0c;以数据说话&#xff0c;通过数据为企业提升渠道转化率、改善企业产品、实现精准运营&#xff0c;为企业打造自助模式的数据分析成果&#xff0c;以数据…

无人机巡山护林,林业无人机智能助力绿色守护

随着全球环保意识的不断提高&#xff0c;无人机巡山护林已经成为解决森林巡检难题的一种独特而高效的方式。在我国&#xff0c;各地正积极探索无人机在森林防火、病虫害监测以及生态调查等领域的创新应用。随着无人机技术的不断演进&#xff0c;其在推动森林保护和可持续发展方…

高性能和多级高可用,云原生数据库 GaiaDB 架构设计解析

1 云原生数据库和 GaiaDB 目前&#xff0c;云原生数据库已经被各行各业大规模投入到实际生产中&#xff0c;最终的目标都是「单机 分布式一体化」。但在演进路线上&#xff0c;当前主要有两个略有不同的路径。 一种是各大公有云厂商选择的优先保证上云兼容性的路线。它基于存…

工作上Redis安装及配置

下载redis软件 第一步&#xff1a;解压压缩包 tar -zxvf redis-7.0.14.tar.gz 第二步&#xff1a;移动redis存放目录&#xff08;结合个人需求而定&#xff01;&#xff09; redis-7.0.14&#xff1a;解压后的文件路径 /usr/local&#xff1a;移动后的文件路径 mv redis-7.0.…

QT作业2

使用手动连接&#xff0c;将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中&#xff0c;在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中&#xff0c;在槽函数中判断ui界面上输入的账号是否为"admin"&#xff0c;密码是否为…

Flutter一直 Running Gradle task ‘assembleDebug‘

Flutter升级到3.13.7之后&#xff0c;一直Running Gradle task ‘assembleDebug’&#xff0c;之前运行还没问题。 试了各种方法&#xff0c;比如添加阿里云镜像&#xff0c;flutter\packages\flutter_tools\gradle目录下修改build.gradle.kts文件&#xff0c;都不行。 参考大佬…

WeLive开源在线客服系统源码 /PHP企业级在线客服聊天系统源码/支持移动+PC端+中英文双语自由切换

源码简介&#xff1a; WeLive开源在线客服系统源码 &#xff0c;它作为企业级在线客服系统源码&#xff0c;可以支持移动PC端&#xff0c;中英文双语自由切换。 WeLive开源PHP在线客服系统源码 WeLive5是一个企业级的在线客服系统, 程序小巧使用简单。 WeLive5是一个企业级的…

UE4 在编辑器下进行打印 学习笔记

创建WidgetComponent 创建Blueprint Interface 创建接口名字 在WidgetComponent里面使用Tick调用才创建的接口 随便创建一个Actor 在BP里面使用这个接口 在这里搜索它调用 在这里就可以做对应的操作 把组件加到Actor上面 把这个Actor放入场景 就开始打印了

Navicat 技术指引 | 适用于 GaussDB 分布式的自动运行功能

Navicat Premium&#xff08;16.3.3 Windows 版或以上&#xff09;正式支持 GaussDB 分布式数据库。GaussDB 分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能&#xff0c;还提供强大的高阶功能&#xff08;如模型、结…

视频剪辑:视频转码实用技巧,批量将MP4转为MP3音频

随着数字媒体设备的普及&#xff0c;视频和音频文件已成为日常生活中的重要组成部分。有时&#xff0c;可能要将MP4视频文件转换为MP3音频文件&#xff0c;以提取其中的音频内容或者进行其他处理。这是耗费时间的任务&#xff0c;那要如何操作呢&#xff1f;本文详解云炫AI智剪…

【已解决】SpringBoot Maven 打包失败:class lombok.javac.apt.LombokProcessor 错误

文章目录 出错原因解决办法总结 最新项目部署的时候&#xff0c;出现了一个maven打包失败的问题&#xff0c;主要是lombok这个组件出的问题&#xff0c;具体的错误信息如下&#xff1a; 我的lombok版本如下&#xff1a; <dependency><groupId>org.projectlombok&l…

【数值计算方法(黄明游)】解线性代数方程组的迭代法(一):向量、矩阵范数与谱半径【理论到程序】

文章目录 一、向量、矩阵范数与谱半径1、向量范数a. 定义及性质补充解释范数差 b. 常见的向量范数 l 1 l_1 l1​、 l 2 l_2 l2​、 l ∞ l_\infty l∞​ 范数性质关系 2、矩阵范数a. 矩阵的范数b. 常见的矩阵范数相容范数算子范数 3、谱半径4、知识点总结1. 向量范数2. 矩阵范数…

数字化转型怎么才能做成功?_光点科技

数字化转型对于现代企业来说是一场必要的革命。它不仅仅是技术的更迭&#xff0c;更是企业战略、文化和运营方式全面升级的体现。一个成功的数字化转型能够使企业更具竞争力、更灵活应对市场变化&#xff0c;并最终实现业务增长和效率提升。那么&#xff0c;数字化转型怎么才能…

vue 使用 h函数

我的项目前端使用的vben-admin框架。现在有个需求需要在列表中显示一个自定义链接 先贴出做成功的效果如下图。 在做之前通过咨询和搜索得知 可以用vue的h函数来返回一个dom。 那我就去看vue官网对于h函数的说明和示例&#xff0c;大致浏览了一页&#xff0c;感觉还是有点迷糊…

【GEE笔记】在线分类流程,标注样本点、分类和精度评价

GEE在线分类流程 介绍 GEE&#xff08;Google Earth Engine&#xff09;是一个强大的地理信息处理平台&#xff0c;可以实现在线的遥感影像分析和处理。本文将介绍如何使用GEE进行在线的分类流程&#xff0c;包括标注样本点、分类和精度评价。本文以2020年5月至8月的哨兵2影像…