【web | CTF】BUUCTF [HCTF 2018]WarmUp

news2024/11/15 5:36:22

天命:这题本地php代码是无法复现的

首先打开网站,啥也没有,查看源码

发现文件,打开访问一下看看,发现是代码审计

<?php
    highlight_file(__FILE__);
    class emmm
    {
        public static function checkFile(&$page)
        {
            $whitelist = ["source"=>"source.php","hint"=>"hint.php"];
            if (! isset($page) || !is_string($page)) {
                echo "you can't see it";
                return false;
            }

            // 拦截1:判断是否数组里面两个文件名
            if (in_array($page, $whitelist)) {
                return true;
            }

            // 拦截2:输入的东西在最后面添加上?,然后获取字符串长度,通过长度来截取字符串
            // 如果?前面是数组里面的东西,就返回true,
            $_page = mb_substr( $page, 0, mb_strpos($page . '?', '?'));
            if (in_array($_page, $whitelist)) {
                return true;
            }

            // 拦截3:url解码是不生效,忽略
            $_page = urldecode($page);
            // 拦截4:因为url解码不生效,所以拦截跟上面一样,忽略
            $_page = mb_substr( $_page, 0, mb_strpos($_page . '?', '?'));
            if (in_array($_page, $whitelist)) {
                return true;
            }
            echo "you can't see it";
            return false;
        }
    }

    if (! empty($_REQUEST['file'])
        && is_string($_REQUEST['file'])
        && emmm::checkFile($_REQUEST['file'])
    ) {
        include $_REQUEST['file'];
        exit;
    } else {
        echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
    }  
?>

访问一下hint.php文件就告诉我们,flag在 ffffllllaaaagggg 这个文件里

拦截大概意思就是,我们输入:ffffllllaaaagggg

会被添加问号:ffffllllaaaagggg?

然后截取问号前数据,就是输入什么就判断什么

ffffllllaaaagggg == 数组里两个文件名吗?

相等才能放行

所以输入的东西必须是其中之一

hint.php  是必填的,然后重点来了,想要访问成其他文件,只需要继续拼接?文件名

就可以了

hint.php?ffffllllaaaagggg

这里经验灵感是 四个字,所以是四层目录

所以完整的flag:source.php?file=hint.php?../../../../../ffffllllaaaagggg

然后你会发现,这TM是五层目录啊,而且本地是无法复现出来的

可能是古代版本的php才能复现出来

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

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

相关文章

IOS 发布遇到“Unable to authenticate with App Store Connect”错误咋解决?

问题&#xff1a; 在开发ios app后&#xff0c;先发布adhoc版本&#xff0c;测试通过后&#xff0c;再发布testflight版本测试&#xff0c;但是可能会遇到一下问题。 解决办法&#xff1a; 在Signing &Capabilities中&#xff0c;在ios下边要指定有发布权限的Team账号&a…

文件底层的理解之缓冲区

目录 一、缓冲区的初步认识 二、向文件中写数据的具体过程 三、缓冲区刷新的时机 一、缓冲区的初步认识 缓冲区其实就是一块内存区域&#xff0c;采用空间来换时间&#xff0c;可以提高使用者的效率。我们一直说的缓冲区其实是语言层面上的缓冲区&#xff0c;其实操作系统内部…

黑马点评-商户查询业务

缓存原理 本文的业务就是redis的经典应用&#xff0c;标准的操作方式就是查询数据库之前先查询缓存&#xff0c;如果缓存数据存在&#xff0c;则直接从缓存中返回&#xff0c;如果缓存数据不存在&#xff0c;再查询数据库&#xff0c;然后将数据存入redis。 缓存更新策略 根据…

iMazing 3.0.0.3 for mac 中文破解版2024最新图文安装教程

我们刚刚发布了iMazing 3.0.0.3 for mac 中文版本。Windows和macOS用户现在都可以试驾并体验iPhone管理的未来。 备受期待的第一个Windows版本得益于过去几个月macOS测试版的所有改进&#xff0c;使其成为一个稳定的初始版本。 我们的开发团队创造了一种无缝的外观和体验&#…

sql 注入 之sqli-labs/less-6 双注入,双引号报错注入

和第五关类似&#xff0c;只不过闭合符号是双引号 1&#xff0c;查数据库 1"and%20(updatexml(1,concat(0x7e,(select%20database()),0x7e),1))%20-- 2.查表 内容有多行&#xff0c;所以使用limit依次查询 1"and%20(updatexml(1,concat(0x7e,(select%20table_nam…

Spring中的数据校验---JSR303

介绍–什么是JSR303 JSR 303是Java中的一项规范&#xff0c;用于定义在Java应用程序中执行数据校验的元数据模型和API。JSR 303的官方名称是"Bean Validation"&#xff0c;它提供了一种在Java对象级别上执行验证的方式&#xff0c;通常用于确保输入数据的完整性和准…

app软件开发的费用大约多少

现在手机的用户在增多&#xff0c;大部分的人都是通过手机软件去操作完成的东西比较多&#xff0c;所以导致现在的流量都在手机端。那么不管是电脑端还是手机端都是在同时发展的&#xff0c;使用电脑的人群只是倾向在了工作人群&#xff0c;而手机的流量大部分是来自于生活中。…

HarmonyOS—配置编译构建信息

在进行应用/服务的编译构建前&#xff0c;需要对工程和编译构建的Module进行设置。API Version 9、API Version 8与API Version 4~7的构建体系不同&#xff0c;因此在设置编译构建信息时也存在差异&#xff1a; API Version 9&#xff1a;需要对构建配置文件、构建脚本、应用依…

Springboot+vue的考勤管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue的考勤管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层…

边缘计算网关的重要作用-天拓四方

随着物联网技术的迅猛发展&#xff0c;数据量的爆炸式增长对数据处理和分析提出了更高的要求。边缘计算网关作为连接物理世界和数字世界的桥梁&#xff0c;正逐渐受到各行业的重视。本文将从行业背景、功能特点以及带来的效益等方面&#xff0c;探讨边缘计算网关在当前及未来的…

HTML中自定义鼠标右键菜单

今天突然有人跟我提到了HTML中如何自定义鼠标右键菜单&#xff0c;这里大概记录一下吧&#xff0c;方便下次直接复制。免得还去看API文档。 文章目录 HTML中自定义鼠标右键菜单结果如下所示可以稍微改一下鼠标悬浮到右键菜单时的样式结果如下所示 只在某个特定的div才可以显示…

来不及了!大学必须完成的四件事!

老师们常说&#xff0c;上大学就轻松了 其实不然 大学不是人生的终点&#xff0c;而是新的起跑线 不是休息站&#xff0c;而是进入社会的最后冲刺跑道 大学生活苦乐参半&#xff0c;成人世界即将来临 出了校门&#xff0c;你会发现社会复杂多变&#xff0c;需要不断学习 稍…

C++之结构体以及通讯录管理系统

1&#xff0c;结构体基本概念 结构体属于自定义的数据概念&#xff0c;允许用户存储不同的数据类型 2&#xff0c;结构体的定义和使用 语法&#xff1a;struct 结构体名{ 结构体成员列表}&#xff1b; 通过结构体创建变量的方式有三种&#xff1a; 1&#xff0c;struct …

在Jupyter-lab中使用RDKit画分子2D图

在Jupyter-lab中使用RDKit画分子2D图 在做完分子对接后&#xff0c;想看看筛选后的分子的结构。因此想利用Jupyter-lab来画分子的2D图。 1. 安装Jupyter-lab与RDKit 系统&#xff1a;Win11已安装conda RDKit 是一个功能强大、灵活易用的化学信息学工具包&#xff0c;广泛应…

前端CSS常考问题总结

目录 CSS盒模型 CSS选择器的优先级 隐藏元素的方法 px和rem的区别是什么? 重绘重排有什么区别? 重排&#xff08;回流&#xff09;&#xff1a; 重绘&#xff1a; 浏览器的渲染机制: 浏览器如何解析CSS&#xff1f; 元素水平垂直居中的方式 CSS的哪些属性哪些可以…

队列循环——C++引用详解【入队元素不引用 出队元素引用】(C语言版)

出队元素引用 入队元素不引用解释&#xff1a; 在给定的代码中&#xff0c;对于 DeQueue 函数的参数使用引用 (&)&#xff0c;而对于 EnQueue 函数的参数没有使用引用&#xff0c;是基于函数内部对这些参数值的修改方式来确定的。 让我们分析一下每个函数&#xff1a; En…

SQL-Labs靶场“29-31”关通关教程

君衍. 一、二十九关 基于错误的WAF单引号注入1、源码分析2、HTTP参数污染3、联合查询注入4、updatexml报错注入 二、三十关 基于错误的WAF双引号注入1、源码分析2、联合查询注入3、updatexml报错注入 三、三十一关 基于错误的WAF双引号括号注入1、源码分析2、联合查询注入3、up…

windows10下如何通过命令行方式新增一个外部WLAN的Wifi热点并连接

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython 一、背景 最近碰到2个家人windows下连接电脑热点的问题&#xff0c;一个是在某个培训场所显示的热点名称不是公布的热点名称&#xff0c;而是一个乱码&#xff0c;在家里和工作单位热点则显示正常&#xff…

【二叉搜索树】【前后指针】Leetcode 501. 二叉搜索树中的众数

【二叉搜索树】【前后指针】Leetcode 501. 二叉搜索树中的众数 解法1 中序遍历双指针解法2 我的复杂方法 先中序遍历到数组&#xff0c;之后hashmap遍历判断众数 之后转化为数组输出 ---------------&#x1f388;&#x1f388;题目链接&#x1f388;&#x1f388;-----------…

(已解决)emoji及其特殊符号在vue中的使用

问题叙述 使用问题&#xff1a;在表情库中点击后无法展示对应的emoji表情&#xff0c;仅仅显示Unicode代码编号&#xff0c;按照vue eslint规则更改添加分号后&#xff0c;没有报错但是依旧无法正确渲染。 问题源码&#xff1a; <template><div><!-- 被点击的…