[GXYCTF2019]禁止套娃1

提示

  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.mzph.cn/news/207725.shtml

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

相关文章

我想涨工资,请问测试开发该怎么入门?

我是测试开发工程师!欢迎和我交流测试领域相关问题&#xff08;测试入门、技术、python交流都可以&#xff09; 我几乎是靠这套方法&#xff0c;从一个只会功能测试的小白&#xff0c;到成为测试开发工程师的。 别急&#xff0c;先慢慢看&#xff0c;只要按照下面的流程走一遍…

postcss-pxtorem实现页面自适应的原理

先声明一点这玩意本身不能实现哈&#xff0c;他只是一个工具&#xff0c;更是一个postcss的插件 帮助我们从px转化成为rem比如我们的代码 div {height: 100px;width: 100px; }经过这个插件转化之后变成 假设变成下面这样哈 div {height: 1rem;width: 1rem; }其他没啥子太大作…

Spring全面详解

目录 1. Spring 概述 1.1 Spring是什么 1.2 Spring的作用 1.3 Spring IoC是什么 2. Spring 快速入门 3. Spring Bean 3.1 的实例化方式 空参构造器 3.2 的属性注入 全参构造器注入 setter方法注入 策略模式 3.3 注解管理 3.4 注解方式的属性注入 1. Spring 概述 …

奕碳科技亮相COP28:展现中国智慧,引领全球碳减排新篇章

11月30日,联合国气候变化框架公约第28次缔约方大会 (COP28) 在阿联酋迪拜开幕。COP28是全球气候治理的重要盛会&#xff0c;汇聚了世界各国领导人、企业界和科学界代表&#xff0c;共同探讨和制定应对全球气候变化的策略与行动计划。在这样的背景下&#xff0c;企业群体的积极参…

跨境电商系统搭建 无货源系统对接API 反向代购系统

跨境电商系统是为国外的客户代购中国商品的系统&#xff0c;系统实现与国内电商API对接&#xff0c;客户可直接在系统中搜索国内电商平台的商品。查看演示网站 一级功能二级功能 标准版 高级版 企业版 企业旗舰版 大客户尊享版 标准版高级版企业版企业旗舰版大客户尊享版 前台主…

2023.12.7 关于 MySQL 事务详解

目录 事务的四大特性 原子性 一致性 持久性 隔离性 事务并发执行 脏读 不可重复读 幻读 四个隔离级别 read uncommitted read committed repeatable read serializable 事务的四大特性 原子性 一个事务中的所有操作&#xff0c;要么全部完成&#xff0c;要么全部…

Java数据结构之《链式二叉树的创建及遍历》(难度系数100)

一、前言&#xff1a; 这是怀化学院的&#xff1a;Java数据结构中的一道难度偏难(偏难理解)的一道编程题(此方法为博主自己研究&#xff0c;问题基本解决&#xff0c;若有bug欢迎下方评论提出意见&#xff0c;我会第一时间改进代码&#xff0c;谢谢&#xff01;) 后面其他编程题…

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

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

教你pycharm运行Django第一个项目

文章目录 前言搭建Django:1.新建Django项目&#xff1a;2.为Django项目指定远程中创建的虚拟环境下的python解释器&#xff1a;3.配置ubuntu的端口转发&#xff08;添加端口号为1234的端口&#xff09;&#xff1a;关于Python技术储备一、Python所有方向的学习路线二、Python基…

循环单向链表与约瑟夫问题

循环链表介绍 先不急着看约瑟夫问题是什么&#xff0c;先了解循环链表的结构&#xff0c;那什么是循环链表&#xff1f; 循环&#xff0c;顾名思义&#xff0c;从链表中第一个节点出发&#xff0c;还会遇到第一个节点&#xff0c;形成循环的一环。也就是说链表中最后一个节点…

python 使用 watchdog 实现类似 Linux 中 tail -f 的功能

一、代码实现 import logging import os import threading import timefrom watchdog.events import FileSystemEventHandler from watchdog.observers import Observerlogger logging.getLogger(__name__)class LogWatcher(FileSystemEventHandler):def __init__(self, log_…

《opencv实用探索·十五》inRange二值化图像

opencv接口如下&#xff1a; void inRange(InputArray src, InputArray lowerb, InputArray upperb, OutputArray dst);函数实现二值化功能&#xff0c;主要是将在两个阈值内的像素值设置为白色&#xff08;255&#xff09;&#xff0c;而不在阈值区间内的像素值设置为黑色&am…

一篇文章带你快速入门 Nuxt.js 服务端渲染

1. Nuxt.js 概述 1.1 我们一起做过的SPA SPA&#xff08;single page web application&#xff09;单页 Web 应用&#xff0c;Web 不再是一张张页面&#xff0c;而是一个整体的应用&#xff0c;一个由路由系统、数据系统、页面&#xff08;组件&#xff09;系统等等&#xff0…

HbuilderX使用Uniapp+Vue3安装uview-plus

如果你是vue2版本想使用uniapp去配置uviewui库可以参考之前的文章 小程序的第三方ui库推荐较多的还是uview的&#xff0c;看起来比较美观&#xff0c;功能也比较完善&#xff0c;下面将提一下Vue3安装uview-plus库的教程 创建项目 安装 首先进入官网 uView-Plus 直接下载并导…

预训练--微调

预训练–微调 一个很简单的道理&#xff0c;如果我们的模型是再ImageNet下训练的&#xff0c;那么这个模型一定是会比较复杂的&#xff0c;意思就是这个模型可以识别到很多种类别的即泛化能力很强&#xff0c;但是如果要它精确的识别是否某种类别&#xff0c;它的表现可能就不…

07-2 Python模块和命名空间

1. 模块 概念&#xff1a;其实就是一个Python文件&#xff0c;正常文件有的变量&#xff0c;函数&#xff0c;类&#xff0c;模块都有 功能:模块可以被其它程序引入&#xff0c;以使用该模块中的函数等功能。 示例&#xff1a;test-module.py调用mymodule.py模块中的now_time…

一篇文章带你快速入门 Vue 核心语法

一篇文章带你快速入门 Vue 核心语法 一、为什么要学习Vue 1.前端必备技能 2.岗位多&#xff0c;绝大互联网公司都在使用Vue 3.提高开发效率 4.高薪必备技能&#xff08;Vue2Vue3&#xff09; 二、什么是Vue 概念&#xff1a;Vue (读音 /vjuː/&#xff0c;类似于 view) …

Mysql 日期函数大全

一、时间函数 &#xff08;一&#xff09;、获取当前时间 1、NOW() 获取当前日期和时间&#xff0c;在程序一开始执行便拿到时间 返回格式 YYYY-MM-DD hh:mm:ss eg&#xff1a; NOW() 得到 2023-12-03 12:20:02 NOW(),SLEEP(2),NOW() 得到 2023-12-03 12:20:02 | 0 | 2023-…

目标检测——OverFeat算法解读

论文&#xff1a;OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks 作者&#xff1a;Pierre Sermanet, David Eigen, Xiang Zhang, Michael Mathieu, Rob Fergus, Yann LeCun 链接&#xff1a;https://arxiv.org/abs/1312.6229 文章…

SpringAOP专栏二《原理篇》

上一篇SpringAOP专栏一《使用教程篇》-CSDN博客介绍了SpringAop如何使用&#xff0c;这一篇文章就会介绍Spring AOP 的底层实现原理&#xff0c;并通过源代码解析来详细阐述其实现过程。 前言 Spring AOP 的实现原理是基于动态代理和字节码操作的。不了解动态代理和字节码操作…