[GXYCTF2019]禁止套娃(特详解)

news2024/12/27 12:57:07

刚打开页面什么都没有,抓包也什么都没有

image-20240129230547068

那就dirsaerch扫一下,发现状态码都是429,访问太快了(这里很多师傅都没有说明或者说清楚)

image-20240129230809356

这里改了一下线程(kali自带的,如果用的脚本要加前面要加python)

dirsearch -u http://d4300875-40df-4a49-a897-d48abc13126c.node5.buuoj.cn:81/ -e php -s 1

发现.git文件,原来是git泄露

image-20240129231035791

对于git泄漏我们可以使用Githack工具 https://github.com/lijiejie

下载后,直接运行脚本

python GitHack.py http://d4300875-40df-4a49-a897-d48abc13126c.node5.buuoj.cn:81/.git    

成功下载了index.php文件

image-20240129231353500

源码

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

解释一下关键代码

  1. if (!preg_match('/data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i', $_GET['exp'])) {:使用正则表达式检查 "exp" 参数中是否包含某些危险协议,如 data://、filter://、php://、phar://。如果包含,则输出错误消息。

  2. if(';' === preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'])) {:检查是否在 "exp" 参数中存在函数调用,并使用递归匹配来验证函数调用的合法性。如果合法,则执行下一步。

    '/[a-z,_]+\((?R)?\)/':这是一个正则表达式,用于匹配类似函数调用的字符串。让我们分解这个正则表达式:

    • [a-z,_]+:匹配任意长度的由小写字母、逗号和下划线组成的字符串,这部分表示函数名。

    • \(:匹配左括号 "("。

    • (?R)?:这是一个递归匹配的部分,表示匹配任何可能包含函数调用的字符串,递归地调用整个正则表达式。

    • \):匹配右括号 ")"。

    总体而言,这个正则表达式用于匹配类似于 function_name(...) 这样的字符串。一个合法的表达式也可以是a(b();)

  3. if (!preg_match('/et|na|info|dec|bin|hex|oct|pi|log/i', $_GET['exp'])) {:检查 "exp" 参数中是否包含某些关键词,如果包含,则输出错误消息。这是为了防止直接调用一些敏感函数或操作。

最后通过eval拿到flag,合着意思就是只能使用无参函数的嵌套来读取flag.php文件

看了其他师傅的博客有了思路,太伟大了!!

方法一

先介绍几个函数

highlight_file() 函数对文件进行语法高亮显示,本函数是show_source() 的别名
next() 输出数组中的当前元素和下一个元素的值。
array_reverse() 函数以相反的元素顺序返回数组。(主要是能返回值)
scandir() 函数返回指定目录中的文件和目录的数组。
pos() 输出数组中的当前元素的值。
localeconv() 函数返回一个包含本地数字及货币格式信息的数组,该数组的第一个元素就是"."。

payload:

exp=highlight_file(next(array_reverse(scandir(pos(localeconv())))));

思路:

loacleconv 函数会固定返回一个 . 然后pos将我们获得的 .返回到我们构造的 payload 使得 scandir能够返回当前目录下的数组(换句话说,就是读出当前目录下的文件) rray_reverse()以相反的顺序输出(目的是以正序输出查询出来的内容)然后 next 提取第二个元素(将.过滤出去),最后用highlight_file()给显示出来

image-20240129232053232

方法二 上面 的正则过滤中 其实并没有过滤掉 session_id() 所以我们可以通过在数据包里加入session,使用 session_id来获取 flag session_id() 可以用来获取/设置 当前会话 ID。 在我们使用 session_id()的时候 需要使用session_start()来开启session会话 我们尝试构造payload

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

传参然后抓包,加cookie

image-20240129233149186

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

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

相关文章

【vue】图片加载骨架

一、前言 在网速较低或者网站的服务器宽带只有几MB的情况下&#xff0c;网页中的图片加载时&#xff0c;要么空白&#xff0c;要么像打印机一样一行一行地“扫描”出来&#xff0c;为了提升用户体验&#xff0c;可以给图片标签外加一层骨架。 无骨架 有骨架 二、详细设计 每张…

Mysql 删除数据

从数据表中删除数据使用DELETE语句&#xff0c;DELETE语句允许WHERE子句指定删除条件。DELETE语句基本语法格式如下&#xff1a; DELETE FROM table_name [WHERE <condition>]; table_name指定要执行删除操作的表&#xff1b;“[WHERE <condition>]”为可选参数&a…

宠物用品/宠物自动饮水机方案

宠物自动饮水机方案原理 宠物自动饮水机&#xff0c;也叫做智能宠物饮水机&#xff0c;是一种为宠物设计的智能化饮水器。应用核心主要在于智能化水泵控制&#xff0c;以及外围传感器电路。 宠物自动饮水机使用方便&#xff0c;不用频繁的换水。另外&#xff0c;自来水的水质可…

二阶魔方、四阶魔方 还原公式图文教程

二阶魔方 四阶魔方 在家无聊&#xff0c;翻东西的时候看到了以前买的4阶魔方&#xff0c;就随便在网上复制了一个4阶魔方的教程&#xff0c;以免忘记。 本文四阶魔方公式图解是针对四阶魔方教程的降阶法做更多的解释和说明。 四阶魔方被认为是2-5阶魔方玩法中最不好复原的,虽…

一文说清楚仿真与数字孪生的关系

获取更多资讯&#xff0c;赶快关注上面的公众号吧&#xff01; 文章目录 何为仿真何为数字孪生 最近看群里的小伙伴在疯狂讨论数字孪生&#xff0c;今天我也谈谈自己的理解。 之前还在北航读博的时候&#xff0c;北航陶飞教授已经算是数字孪生领域的领军人物&#xff0c;也专门…

Ubuntu 隐藏Telnet主机SSH服务时显示版本信息问题

一、背景 默认情况下&#xff0c;我们通过telnet服务器的22端口&#xff0c;能够获取OpenSSH服务的banner信息(如下图所示)。而低版本的OpenSSH存在许多高危漏洞。。为了安全我们要隐藏这个信息。 二、隐藏Telnet版本信息 当使用telnet命令&#xff0c;telnet 192.168.31.20…

SeaTunnel Web安装 一把成

安装相关jar包&#xff0c;以及SeaTunnel 和Web 打成的包&#xff0c;可以直接使用&#xff0c;但是需要安装MySQL客户端的分享&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1qrt1RAX38SgIpNklbQJ7pA 提取码&#xff1a;0kmf 1. 环境准备 环境名称版本系统环境C…

WPOpenSocial实现WordPress的QQ登录

个人建站不可避免的需要自己搭建用户数据库的问题&#xff0c;可用户却往往因为注册繁琐而放弃浏览您的网站&#xff0c;由此可见&#xff0c;一个社交账号一键登录方式尤为重要。选择适合您网站需求的社交插件&#xff0c;可以提升用户互动&#xff0c;增加社交分享&#xff0…

高端车规MCU的破局之路

目录 1 低质量的无效内卷 2 高端车规MCU产品共性 2.1 支持标定测量 2.2 低延迟通信加速 2.3 完备的网络安全解决方案 2.4虚拟化 3 国产替代的囚徒困境 1 低质量的无效内卷 近几年&#xff0c;车规MCU国产替代的呼声此消彼长&#xff0c;但仍然集中在低端产品。 从产…

后序遍历的线索化二叉树

对于后序遍历&#xff0c;需要明确&#xff0c;往往叶子结点&#xff0c;只能指向右子树&#xff08;如果右子树存在的情况&#xff09;&#xff0c;或者指向该结点&#xff08;因为这才是后序遍历&#xff09;&#xff0c;同样在进行退出到前一次递归的时候&#xff0c;我们要…

基于Redis的高可用分布式锁——RedLock

目录 RedLock简介 RedLock工作流程 获取锁 释放锁 RedLock简介 Redis作者提出来的高可用分布式锁由多个完全独立的Redis节点组成&#xff0c;注意是完全独立&#xff0c;而不是主从关系或者集群关系&#xff0c;并且一般是要求分开机器部署的利用分布式高可以系统中大多数存…

再学vue3的优势

vue3 对 vue2 有什么优势 性能更好&#xff08;编译优化、使用proxy等&#xff09;体积更小更好的TS支持更好的代码组织更好的逻辑抽离更多新功能 vue3 和 vue2 的生命周期有什么区别 Options API生命周期 beforeDestroy改为beforeUnmountdestroyed改为umounted其他沿用vue…

网络安全01--负载均衡

目录 一、环境准备 1.1三台虚拟机 二、开始搭建负载均衡&#xff1a; 2.1准备一下源 2.2正式安装 2.3Nginx安装情况 三、负载均衡--轮询&#xff08;round robin&#xff09; 3.1在 http 部分添加如下负载均衡配置&#xff1a; 3.2简单解释一下server端&#xff1a; …

vxe-table表格合并行和虚拟滚动冲突

项目一直用的vxe-table 2.0版本&#xff0c;支持表格的虚拟滚动&#xff0c;最近要做表格合并行功能&#xff0c;虚拟滚动便失效了&#xff0c;强行虚拟滚动&#xff0c;合并行会有错行现象。 vxe-table2.0给出的解释是&#xff1a;合并行不能和虚拟滚动一起使用。 目前找到两种…

代码之外的艺术:程序员的写作利器

在这个信息爆炸的时代&#xff0c;知识的管理和团队协作成了重要的技能。对于个人和企业来说&#xff0c;高效的文档和笔记服务平台是保持竞争力的关键工具。今天&#xff0c;让我们深入对比一下当前市场上流行的几款服务&#xff1a;石墨文档、腾讯文档、语雀、有道云笔记、No…

Linux:理解信号量以及内核中的三种通信方式

文章目录 共享内存的通信速度消息队列msggetmsgsndmsgrcvmsgctl 信号量semgetsemctl 内核看待ipc资源单独设计的模块ipc资源的维护 理解信号量总结 本篇主要是基于共享内存&#xff0c;延伸出对于消息队列和信号量&#xff0c;再从内核的角度去看这三个模块实现进程间通信 共享…

剖析Elasticsearch面试题:分词、倒排索引、文本相似度TF-IDF,揭秘分段存储与段合并,解密写索引技巧,应对深翻页问题的实用解决方案!

1、谈谈分词与倒排索引的原理 当谈到Elasticsearch时&#xff0c;分词与倒排索引是两个关键的概念&#xff0c;理解它们对于面试中展示对Elasticsearch工作原理的理解至关重要。 「1. 分词&#xff08;Tokenization&#xff09;&#xff1a;」 分词是将文本分解成一个个单独…

智能水肥一体化灌溉系统:提升农业生产效率的数字化解决方案

一、设备介绍(key-iot.com.cn)&#xff1a; 我们的星创易联设备是智能水肥一体化灌溉系统的核心组成部分。该设备由多个先进的传感器和执行器组成&#xff0c;可以对环境因素、土壤湿度和植物生长状态进行实时监测。其中包括&#xff1a; 1. 土壤湿度传感器&#xff1a;通过监…

电商API接口接入|电商爬虫实践附代码案例

1.爬虫是什么 首先应该弄明白一件事&#xff0c;就是什么是爬虫&#xff0c;为什么要爬虫&#xff0c;百度了一下&#xff0c;是这样解释的&#xff1a;网络爬虫&#xff08;又被称为网页蜘蛛&#xff0c;网络机器人&#xff0c;在FOAF社区中间&#xff0c;更经常的称为网页追…

CTFHub:web-LD_PRELOAD-WP

解题思路 思路分析 根据资料可得知有四种绕过 disable_functions 的手法&#xff1a; 攻击后端组件&#xff0c;寻找存在命令注入的 web 应用常用的后端组件&#xff0c;如&#xff0c;ImageMagick 的魔图漏洞、bash 的破壳漏洞等等寻找未禁用的漏网函数&#xff0c;常见的执…