[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,一经查实,立即删除!

相关文章

Java参数校验详解:使用@Valid注解和自定义注解进行参数验证

很多时候我们需要使用不少if、else等等逻辑判断及验证&#xff0c;这样在进行一些重复的参数校验会很麻烦&#xff0c;且以后要维护也会吃力。 而这样就可以使用javax.validation。验证&#xff08;Validation&#xff09;常见的验证操作包括验证数据的类型、格式、长度、范围、…

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

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

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

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

P1046 [NOIP2005 普及组] 陶陶摘苹果题解

题目 陶陶家的院子里有一棵苹果树&#xff0c;每到秋天树上就会结出 1010 个苹果。苹果成熟的时候&#xff0c;陶陶就会跑去摘苹果。陶陶有个 3030 厘米高的板凳&#xff0c;当她不能直接用手摘到苹果的时候&#xff0c;就会踩到板凳上再试试。 现在已知 1010 个苹果到地面的…

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;客户可直接在系统中搜索国内电商平台的商品。查看演示网站 一级功能二级功能 标准版 高级版 企业版 企业旗舰版 大客户尊享版 标准版高级版企业版企业旗舰版大客户尊享版 前台主…

shell常用组合命令整理

shell常用组合命令整理 rm -f 是一个用于在Unix/Linux系统中删除文件的命令。这个命令具有以下特点&#xff1a; -f 选项表示“强制”&#xff08;force&#xff09;&#xff0c;即强制删除文件而不提示用户确认。使用 -f 选项时&#xff0c;rm 命令不会询问用户是否确定删除&…

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智剪…

TypeScript中泛型对象、泛型类

一. 概览 本文详细介绍泛型中泛型对象和泛型类的使用&#xff0c;结合实际应用场景&#xff0c;加深对泛型的理解、使用。 二. 泛型对象 举个例子 const test {a: 1,b: 1 }一个类型有没有一种可能让我么在定义的时候传入一个类似于变量的形参&#xff0c;在使用的时候传入…

Jtti:香港云服务器如何实现远程连接?

云服务器具有灵活扩展、高可用性、易于管理和数据安全等优点&#xff0c;因此被广泛应用于各种业务场景。然而&#xff0c;对于初次使用云服务器的用户来说&#xff0c;如何实现远程连接可能是一个难题。本文将详细介绍云服务器实现远程连接的步骤和注意事项&#xff0c;帮助用…

教你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…

什么是HTTPS加密协议?HTTPS安全传输原理,SSL和TLS介绍,NGINX如何配置SSL证书

HTTPS介绍 HTTPS是超文本传输协议&#xff08;HTTP&#xff09;的安全版本。它使用SSL&#xff08;安全套接层&#xff09;或TLS&#xff08;传输层安全&#xff09;加密协议来保护数据传输的安全性和机密性&#xff0c;以防止未经授权的访问和窃听。HTTPS协议通常用于处理敏感…

HbuilderX使用Uniapp+Vue3安装uview-plus

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