[第五空间 2021]WebFTP、[HCTF 2018]Warmup

news2024/11/19 3:34:36

目录

[第五空间 2021]WebFTP

​[SWPUCTF 2021 新生赛]Do_you_know_http

[NCTF 2018]签到题

[HNCTF 2022 Week1]What is Web

[HNCTF 2022 Week1]Interesting_http

[HCTF 2018]Warmup


[第五空间 2021]WebFTP

使用dirsearch扫描,发现有git泄露

使用GitHack克隆目录,但提示为空仓库

python2 GitHack.py http://node4.anna.nssctf.cn:28914/?m=login&a=in/.git

还有其他目录,在phpinfo.php中发现flag

[SWPUCTF 2021 新生赛]Do_you_know_http

打开环境提示说,请使用“WLLM”浏览器!

bp抓包修改UA头为WLLM,发包后提示只能本地访问 id为183.224.81.105

添加X-Forwarded-For:127.0.0.1,回显可看到地址已经变为本地

发包得flag

[NCTF 2018]签到题

抓包发到重发器,回显后发现flag。

[HNCTF 2022 Week1]What is Web

跟上题一样,bp抓包发到重发器,回显后发现flag(base64解码)。

[HNCTF 2022 Week1]Interesting_http

打开环境 提示 POST 发包,参数名为 want

使用HackBar  POST传参want,提示有flag

令want=flag,提示不是 admin 用户

bp抓包将cookie中的user改为admin

改了之后又提示 不是本地,添加xff(X-Forwarded-For:127.0.0.1)回显得到flag。

[HCTF 2018]Warmup

[HCTF 2018]WarmUp(代码审不好,看大佬wp)

打开环境只有一个表情包,查看源代码发现source.php

访问source.php,得到代码

代码审计:

<?php
    highlight_file(__FILE__);        // 引入当前文件

class emmm
{
    public static function checkFile(&$page)
    {
        // 定义一个白名单,包含允许访问的文件名"source.php"和"hint.php"
        $whitelist = ["source"=>"source.php","hint"=>"hint.php"];

//定义了一个名为emmm的类,在该类中有一个静态方法checkFile用于检查要包含的文件是否在白名单中,白名单是一个关联数组$whitelist,其中包含了允许包含的文件的键值对。

        // 如果没有设置$page变量或者$page不是字符串,则返回错误信息
        if (! isset($page) || !is_string($page)) {
            echo "you can't see it";
            return false;
        }

        // 如果$page在白名单中,则返回true
        if (in_array($page, $whitelist)) {
            return true;
        }

        // 截取$page字符串,直到第一个问号的位置
        $_page = mb_substr(
            $page,
            0,
            mb_strpos($page . '?', '?')
        );
        // 如果截取后的$_page在白名单中,则返回true
        if (in_array($_page, $whitelist)) {
            return true;
        }

        // 对$page进行URL解码
        $_page = urldecode($page);

             $_page = mb_substr(
                $_page,
                0,
                mb_strpos($_page . '?', '?')
            );

        // 如果截取后的$_page在白名单中,则返回true
        if (in_array($_page, $whitelist)) {
            return true;
        }

        // 如果都不满足条件,则返回错误信息
        echo "you can't see it";
        return false;
    }
}

符号点 '.' 是 PHP 中的字符串连接运算符,它用于将两个字符串连接在一起,形成一个更长的字符串。

它将 $page 变量的值和一个问号字符 '?' 连接在一起,形成一个新的字符串,在这个新的字符串中查找问号是否存在,那么很明显肯定能找到。

 $_page = mb_substr(
                $page,
                0,
                mb_strpos($page . '?', '?')
            );

//先使用mb_strpos函数找到$page中第一个问号的位置,然后使用mb_substr函数将问号之前的部分作为$_page进行处理。

 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\" />";
    }  

//检查$_REQUEST['file']是否存在且为字符串类型,并调用emmm::checkFile方法进行检查。如果返回值为true,则通过include语句包含$_REQUEST['file']指定的文件并终止程序执行,否则输出一个图片标签。

始终在source.php页面下进行的传参操作,目的是利用include函数将flag文件包含出来

尝试访问hint.php,提示flag在ffffllllaaaagggg中。

source.php?file=hint.php

//php代码的判断过程:

传入file=hint.php,首先检查'hint.php'是否是一个字符串,它是字符串,条件通过;

检查'hint.php'是否在白名单中(白名单包括hint.php和source.php),在,继续执行后面的代码;

对'hint.php'执行mb_substr函数,但是函数内一个参数是来自另一个函数mb_strpos的返回值,因此我们先看mb_strpos函数,使用.进行字符连接,即连接了一个问号字符 '?',得到hint.php?

然后查找'?'在字符串'hint.php?'中第一次出现的位置,从0开始算,返回8,即length=8

接下来执行mb_substr函数,即 mb_substr('hint.php',0,8)

从字符串中的第一个字符处开始,返回8个字符,还是返回hint.php;

然后对返回的内容进行url解码,重复执行上面的检查和截取操作。

构造payload,得到flag。

source.php?file=hint.php?/../../../../ffffllllaaaagggg 
或
source.php?file=source.php?/../../../../ffffllllaaaagggg

//因为当前的source.php一般是在html目录下,往上是www,var,然后到根目录。
flag一般就放在根目录下面,这里还有一个hint.php?/或source.php?/,因此需要返回四层才能到根目录。
即 hint.php?/var/www/html/ffffllllaaaagggg 

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

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

相关文章

HBuilderX编写APP一、获取token

一、新建项目 二、从onenet获取key.js 1、下载之后的压缩包&#xff0c;解压 2、关键就是找到key.js 3、将这个key.js复制到刚才的目录下面去 4、这个key.js文件就是生成token的代码 5、只要调用createCommonToken(params)这个函数&#xff0c;就可以实现生成token了 其中on…

小米开放式耳机怎么样?倍思、西圣、小米开放式耳机测评比较!

作为一名热衷于分享真实体验的博主&#xff0c;我在过去两年开始接触开放式耳机&#xff0c;并因此受到许多朋友的咨询&#xff0c;询问哪款开放式耳机更加出色。为了找出最佳的开放式耳机&#xff0c;我进行了深入的调查和实地测试。我发现高价并不总是代表高质量&#xff0c;…

【全开源】Java共享茶室棋牌室无人系统支持微信小程序+微信公众号

打造智能化休闲新体验 一、引言&#xff1a;智能化休闲时代的来临 随着科技的飞速发展&#xff0c;智能化、无人化服务逐渐渗透到我们生活的各个领域。在休闲娱乐行业&#xff0c;共享茶室棋牌室无人系统源码的出现&#xff0c;不仅革新了传统的休闲方式&#xff0c;更为消费…

嵌入式移植jpeglib--Linux交叉编译ARM平台

一 、交叉编译jpeg库 1.下载源码tar.gz 2. 源码目录下执行 jpeglib配置文件 ./configure CCarm-none-linux-gnueabihf-gcc LDarm-none-linux-gnueabihf-ld --prefix/work/jpeg_arm_lib --exec-prefix/work/jpeg_arm_lib --enable-shared --enable-static --hostarm-none-linu…

高考试卷押运车视频监控解决方案

一、引言 高考作为我国教育领域的重要事件&#xff0c;其公正、公平和安全性一直备受社会关注。试卷押运作为高考的重要环节&#xff0c;其安全性直接关系到高考的顺利进行和考生的切身利益。因此&#xff0c;对高考试卷押运车实施视频监控解决方案&#xff0c;对于确保试卷安…

Asp .Net Core 系列:详解鉴权(身份验证)以及实现 Cookie、JWT、自定义三种鉴权 (含源码解析)

什么是鉴权&#xff08;身份验证&#xff09;&#xff1f; https://learn.microsoft.com/zh-cn/aspnet/core/security/authentication/?viewaspnetcore-8.0 定义 鉴权&#xff0c;又称身份验证&#xff0c;是确定用户身份的过程。它验证用户提供的凭据&#xff08;如用户名和…

短视频直播教学课程小程序的作用是什么

只要短视频/直播做的好&#xff0c;营收通常都不在话下&#xff0c;近些年&#xff0c;线上自媒体行业热度非常高&#xff0c;每条细分赛道都有着博主/账号&#xff0c;其各种优势条件下也吸引着其他普通人冲入。 然无论老玩家还是新玩家&#xff0c;面对平台不断变化的规则和…

【第四节】C/C++数据结构之树与二叉树

目录 一、基本概念与术语 二、树的ADT 三、二叉树的定义和术语 四、平衡二叉树 4.1 解释 4.2 相关经典操作 4.3 代码展示 一、基本概念与术语 树(Tree)是由一个或多个结点组成的有限集合T。其中: 1 有一个特定的结点&#xff0c;称为该树的根(root)结点&#xff1b; 2 …

python-df的合并与Matplotlib绘图

1 数据连接 concat merge join &#xff08;append 作为了解&#xff09; append 竖直方向追加&#xff0c; 在最新的pandas版本中已经被删除掉了&#xff0c; 这里推荐使用concat 1.1 pd.concat 两张表&#xff0c; 通过行名、列名对齐进行连接 import pandas as pd df1 …

Linux网络编程——概念及实现双方聊天

网络编程的场景&#xff1a; 假设你面前有五座房子&#xff08;服务器&#xff09;&#xff0c;你要走到其中一座房子的某一间&#xff0c;此时你站在五座房子面前很迷茫&#xff0c;突然&#xff0c;第二座房子上面有人在叫&#xff0c;并且用汉语&#xff08;TCP/UDP&#xf…

从零开始:疾控中心实验室装修攻略,让你的实验室一步到位!

在当今充满挑战和变化的世界中&#xff0c;疾病的控制和预防成为了人类生存与发展的重要课题。而疾控中心作为防控疾病的核心机构&#xff0c;其疾控中心实验室设计建设显得尤为重要。下面广州实验室装修公司小编将分享疾控中心实验室设计建设方案&#xff0c;为疾病防控工作提…

SpringMVC日期格式处理 分页条件查询

实现日期格式处理&#xff1a; springmvc能实现String类型和基本数据类型及包装类的自动格式转换&#xff0c;但是不能识别String和 日期类格式的自动转换。 实现方式&#xff1a; 1是在实体类上加上注解DateTimeFormat&#xff0c;识别String格式为“yyyy-MM-dd” 2使用自定义…

计网期末复习指南(六):应用层(DNS、FTP、URL、HTTP、SMTP、POP3)

前言&#xff1a;本系列文章旨在通过TCP/IP协议簇自下而上的梳理大致的知识点&#xff0c;从计算机网络体系结构出发到应用层&#xff0c;每一个协议层通过一篇文章进行总结&#xff0c;本系列正在持续更新中... 计网期末复习指南&#xff08;一&#xff09;&#xff1a;计算…

【玩转C语言】第二讲--->数据类型和变量

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 引言&#xff1a; 大家好&#xff0c;我是坊钰&#xff0c;为了让大家深入了解C语言&#xff0c;我开创了【玩转C语言系列】&#xff0c;将为大家介绍C语言相关知识…

centos7环境下安装wine,运行.exe可执行程序

centos7环境下安装wine,运行.exe可执行程序 步骤一&#xff1a;先安装两个扩展 &#xff08;1&#xff09; yum groupinstall ‘Development Tools‘ &#xff08;2&#xff09; yum install libX11-devel freetype-devel zlib-devel libxcb-devel 步骤二&#xff1a; 命令行…

ADASIS V2 协议-1

ADAS V2协议-1 1 简介2 版本控制3 ADASIS v23.1 ADASIS v2 Horizon &#xff08;地平线&#xff09;3.2 ADASIS v2的构建3.3 ADASIS v2 Horizon Provider &#xff08;ADAS V2地平线提供者&#xff09;3.4 paths and offsets &#xff08;路径和偏移量&#xff09;3.5 Path Pro…

【设计模式深度剖析】【1】【行为型】【模板方法模式】| 以烹饪过程为例加深理解

&#x1f448;️上一篇:结构型设计模式对比 | 下一篇:命令模式&#x1f449;️ 设计模式-专栏&#x1f448;️ 文章目录 模板方法模式定义英文原话直译如何理解呢&#xff1f; 2个角色类图代码示例 应用优点缺点使用场景 示例解析&#xff1a;以烹饪过程为例类图代码示例…

国自然基金的检索

&#xff08;1&#xff09;网址 跳转国自然基金网址&#xff1a;https://www.nsfc.gov.cn/ &#xff08;2&#xff09;查询入口 &#xff08;3&#xff09;进行查询

贪心算法-数组跳跃游戏(mid)

目录 一、问题描述 二、解题思路 1.回溯法 2.贪心算法 三、代码实现 1.回溯法实现 2.贪心算法实现 四、刷题链接 一、问题描述 二、解题思路 1.回溯法 使用递归的方式&#xff0c;找到所有可能的走步方式&#xff0c;并记录递归深度&#xff08;也就是走步次数&#x…

fastadmin/thinkPHPQueue消息队列详细教程

thinkphp-queue 是thinkphp 官方提供的一个消息队列服务,它支持消息队列的一些基本特性: 消息的发布,获取,执行,删除,重发,失败处理,延迟执行,超时控制等队列的多队列, 内存限制 ,启动,停止,守护等消息队列可降级为同步执行1、通过composer安装thinkPHP消息队列 …